예제 #1
0
        public async Task <AmazonToken> UploadFile(Stream file)
        {
            // get upload token
            var amazonFile = await Post <AmazonToken>("/v2/file", new ByteArrayContent(new byte[] { }));

            // create payload
            var payload = new MultipartContent("form-data");

            payload.AddFormContent("key", amazonFile.Request.Fields.Key);
            payload.AddFormContent("x-amz-algorithm", amazonFile.Request.Fields.AmazonAlgorithm);
            payload.AddFormContent("x-amz-credential", amazonFile.Request.Fields.AmazonCredential);
            payload.AddFormContent("x-amz-date", amazonFile.Request.Fields.AmazonDate);
            payload.AddFormContent("policy", amazonFile.Request.Fields.Policy);
            payload.AddFormContent("x-amz-signature", amazonFile.Request.Fields.AmazonSignature);
            payload.AddStreamContent("file", amazonFile.FileId, file, "application/octet-stream");

            // upload to S3
            var response = await new HttpClient().PostAsync(AMAZON_UPLOAD_URL, payload);

            if (!response.IsSuccessStatusCode)
            {
                throw new Exception("Error while upload to Amazon S3");
            }

            return(amazonFile);
        }