我有一个存储在 S3 上的图像文件。我想将该文件作为表单数据上传到远程站点。
Controller 线:
response = RestClient.post("#{BASE_URL}/processImage?language=#{LANGUAGE}&exportFormat=txt", :upload => { :file => File.new(asset.avatar.url) })
asset.avatar.url 是一个位于 S3 上的回形针存储文件。在那。它是可公开访问的。
但我不断收到带有 url 的 Errno::ENOENT(没有这样的文件或目录)...这有效!
我可能在这里遗漏了一些简单的东西。有人有什么想法吗?
** 编辑:已解决 **
我使用了 open-uri,然后只使用了 open()。它仍然会下载到服务器,但至少它可以工作。从视觉上看,它看起来更简单。 =)
修复方法如下:
require 'open-uri'
response = RestClient.post("#{BASE_URL}/processImage?language=#{LANGUAGE}&exportFormat=txt", :upload => { :file => open(asset.avatar.url) })
Open-uri 是 ruby 的一部分,因此您无需安装 gem(即:rest-client),只需在您的代码中要求它即可。
我认为我需要在某处使用 .read,但没有它似乎也能正常工作。
最佳答案
在使用 RestClient 发布之前,您需要下载文件/内容。 File.new 将文件路径作为参数,而不是 url。
关于ruby-on-rails - Rails 3.x 通过带有 S3::No such file or dir 错误的 rest-client 上传文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14404079/