【问题标题】:A task was canceled Exception when trying to upload file to S3 bucket尝试将文件上传到 S3 存储桶时,任务被取消异常
【发布时间】:2018-10-05 20:08:25
【问题描述】:
当我尝试调用 fileTransferUtility.UploadAsync 以在 S3 中上传文件时,抛出

任务被取消异常。我正在使用 dot net core 2.0 并尝试将文件上传到 S3。我在下面的代码中做错了什么? 与超时有关吗?如果是这样,如何设置 s3 存储桶的时间?还是我必须在 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);
            }

        }
    }

【问题讨论】:

  • 从发布有问题的确切例外开始怎么样?

标签: amazon-s3 asp.net-core


【解决方案1】:

我忘记传递凭据: 私有 AmazonS3Client _s3Client = new AmazonS3Client(DynamoDbCRUD.Credentials.AccessKey,DynamoDbCRUD.Credentials.SecretKey, RegionEndpoint.APSoutheast1);

这条线运行良好。

【讨论】:

    猜你喜欢
    • 2019-09-11
    • 2021-04-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-25
    • 2018-05-21
    • 2017-11-06
    • 2015-05-05
    相关资源
    最近更新 更多