Задача была отменена Исключение при попытке загрузить файл в корзину S3 - PullRequest
0 голосов
/ 04 октября 2018

Задача была отменена, исключение выдается, когда я пытаюсь вызвать fileTransferUtility.UploadAsync , чтобы загрузить файл i S3.Я использую dot net core 2.0 и пытаюсь загрузить файл на S3.Что я делаю неправильно в приведенном ниже коде?Это как-то связано с Timeout?Если да, то как установить время для S3 Bucket?или я должен установить некоторые свойства на S3 ведро?

Ниже код моего контроллера:

 public class UploadController : Controller
    {
        private IHostingEnvironment _hostingEnvironment;
        private AmazonS3Client _s3Client = new AmazonS3Client(RegionEndpoint.APSoutheast1);
        private string _bucketName = "fileupload";//this is my Amazon Bucket name
        private static string _bucketSubdirectory = String.Empty;
        private string uploadWithKeyName = "testFile";

        public UploadController(IHostingEnvironment environment)
        {
            _hostingEnvironment = environment;
        }

        [HttpPost("UploadExcelData")]
        public async Task PostExcelData()
        {
            var files = Request.Form.Files;
            var stringVal = Request.Form.Keys;
            long size = files.Sum(f => f.Length);

            foreach (var formFile in files)
            {
                if (formFile.Length > 0)
                {
                    var filename = ContentDispositionHeaderValue
                            .Parse(formFile.ContentDisposition)
                            .FileName
                            .TrimStart().ToString();
                    filename = _hostingEnvironment.WebRootPath + $@"\uploads" + $@"\{formFile.FileName}";
                    size += formFile.Length;
                    using (var fs = System.IO.File.Create(filename))
                    {
                        formFile.CopyTo(fs);
                        fs.Flush();
                    }//these code snippets saves the uploaded files to the project directory

                  await UploadToS3(filename);//this is the method to upload saved file to S3

                }
            }
          //  return Ok();
        }
        public async Task UploadToS3(string filePath)
        {
            try
            {
                TransferUtility fileTransferUtility = new
                    TransferUtility(_s3Client);

                string bucketName;


                if (_bucketSubdirectory == "" || _bucketSubdirectory == null)
                {
                    bucketName = _bucketName; //no subdirectory just bucket name  
                }
                else
                {   // subdirectory and bucket name  
                    bucketName = _bucketName + @"/" + _bucketSubdirectory;
                }


                // 1. Upload a file, file name is used as the object key name.
                await fileTransferUtility.UploadAsync(filePath, bucketName, uploadWithKeyName).ConfigureAwait(false);
                Console.WriteLine("Upload 1 completed");


            }
            catch (AmazonS3Exception s3Exception)
            {
                Console.WriteLine(s3Exception.Message,
                                  s3Exception.InnerException);
            }
            catch (Exception ex)
            {
                Console.WriteLine("Unknown error", ex.Message);
            }

        }
    }

1 Ответ

0 голосов
/ 05 октября 2018

Я забыл передать учетные данные: private AmazonS3Client _s3Client = new AmazonS3Client (DynamoDbCRUD.Credentials.AccessKey, DynamoDbCRUD.Credentials.SecretKey, RegionEndpoint.APSoutheast1);

Эта строка работает нормально.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...