【发布时间】:2016-01-15 19:17:30
【问题描述】:
使用 Rails,我遵循 this Heroku article 允许将文件直接上传到 S3 存储桶。我实际上关注了这篇文章,因为我之前的实现不适用于分段上传(因此,大文件)。一旦我实现了这个方法大文件上传就好了,除了真的大文件。
我应该注意到我偏离了这篇文章,因为我使用的是 aws gem 的 v1,因为我们的 Rails 版本。
这就是我的设置:
S3_BUCKET = AWS::S3.new.buckets[ENV['S3_BUCKET_NAME']]
def set_s3_post_url
@s3_media_post_url = S3_BUCKET.presigned_post(key: "product_media/#{SecureRandom.uuid}-${filename}", success_action_status: '201', acl: 'public-read')
end
如前所述,这适用于大文件(~1GB),但是当我尝试上传一个文件时,比如 10GB,它会进入大部分上传状态,然后随机失败。有时 20 分钟后,有时 1 小时后。我认为签名的 URL 可能会过期,所以我明确地使用 expires: Time.now + 4.hours 设置了较长的过期时间,但这似乎不起作用。
如果有人对此有任何想法,我将非常感谢您的帮助!
更新
我尝试了@bbozo 使用maxChunkSize 的答案,但不幸的是,这似乎没有做到。但是,当我在控制台中查看 XHR 请求时,失败的请求从 AWS 返回了以下 XML 响应:
<Error>
<Code>InternalError</Code>
<Message>We encountered an internal error. Please try again.</Message>
<RequestId>1231BD4A29EE5291</RequestId>
<HostId>f5muQPj2lT2Tmqi49ffqjT4ueLimYvrWUJL6WRW+F7vgm2rL1+FOD3pmsKOEYxFaSFXzLiEZjTg=</HostId>
</Error>
【问题讨论】:
-
你能提供更多关于它究竟是如何失败的信息吗?
标签: ruby-on-rails-3 jquery-file-upload aws-sdk blueimp jquery-fileupload-rails