【问题标题】:Large file upload to Amazon S3大文件上传到 Amazon S3
【发布时间】:2012-08-22 04:28:06
【问题描述】:

如果我尝试将大文件上传到亚马逊,我会收到以下错误:

“在写入所有字节之前无法关闭流”

代码如下:

amazonClient = AWSClientFactory.CreateAmazonS3Client(_accessKey, _secretKey);

fileTransferUtility = new TransferUtility(amazonClient);

uploadRequest = new TransferUtilityUploadRequest()
                    .WithTimeout((60 * 60 * 1000) * 2)
                    .WithBucketName(containerName)
                    .WithKey(fileName)
                    .WithInputStream(dataStream) as TransferUtilityUploadRequest;

fileTransferUtility.Upload(uploadRequest);

解决办法是什么?

【问题讨论】:

  • 你有错误代码吗?你试过追查源头吗?理想情况下,您应该看到 SDK 将数据流分成块并异步上传。您使用 PutObject 请求看到相同的结果吗?

标签: asp.net asp.net-mvc-3 amazon-s3 amazon-web-services amazon


【解决方案1】:

增加连接超时后重试。

【讨论】:

  • 实际上异常发生在两分钟内。所以我不认为这是连接超时的问题
【解决方案2】:

您确定错误来自 AWS 吗?您的代码的其他一些部分可能正在尝试关闭输入流。

对于大型上传,尝试并行上传到 S3

【讨论】:

  • 是的,我确信它来自 AWS,因为即使是 sql 等其他存储也使用相同的代码。对于并行上传,我使用的是 TransferUtility 方法。仍然导致异常。这是限制还是有其他上传大文件的方法?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-08-14
  • 2018-04-12
  • 1970-01-01
  • 2019-12-10
  • 2013-09-09
  • 2015-10-28
  • 1970-01-01
相关资源
最近更新 更多