ale*_*333 3 ruby ruby-on-rails amazon-s3 ruby-on-rails-3
我正在尝试使用以下简单代码将文件上传到S3:
bucket.objects.create("sitemaps/event/#{file_name}", open(file))
Run Code Online (Sandbox Code Playgroud)
我得到以下内容:
未在超时期限内读取或写入与服务器的套接字连接.空闲连接将被关闭.
怎么可能出错?任何提示将不胜感激.
当基于打开的文件无法正确确定内容长度时,通常会发生此超时.S3正在等待未来的其他字节.修复非常简单,只需以二进制模式打开文件即可.
Ruby 1.9
bucket.objects.create("sitemaps/event/#{file_name}", open(file, 'rb', :encoding => 'BINARY'))
Run Code Online (Sandbox Code Playgroud)
Ruby 1.8
bucket.objects.create("sitemaps/event/#{file_name}", open(file, 'rb'))
Run Code Online (Sandbox Code Playgroud)
如果您传入文件的路径,aws-sdk gem将为您处理:
# use a Pathname object
bucket.objects.create(key, Pathname.new(path_to_file))
# or just the path as a string
bucket.objects.create(key, :file => path_to_file)
Run Code Online (Sandbox Code Playgroud)
此外,您可以在s3中存在之前写入对象,因此您还可以执行以下操作:
# my favorite syntax
obj = s3.buckets['bucket-name'].objects['object-key'].write(:file => path_to_file)
Run Code Online (Sandbox Code Playgroud)
希望这可以帮助.
| 归档时间: |
|
| 查看次数: |
2531 次 |
| 最近记录: |