2

我有一个存储在 S3 上的图像文件。我想将该文件作为表单数据上传到远程站点。

控制器线:

response = RestClient.post("#{BASE_URL}/processImage?language=#{LANGUAGE}&exportFormat=txt", :upload => { :file => File.new(asset.avatar.url) }) 

assets.avatar.url 是一个位于 S3 上的回形针存储文件。在那里。它是公开的。

但是我不断收到带有 url 的 Errno::ENOENT (No such file or directory) ......这很有效!

我可能在这里遗漏了一些简单的东西。有人有想法么?

** 编辑:已解决 **

我使用了 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 在那里的某个地方,但没有它似乎可以正常工作。

4

1 回答 1

1

在使用 RestClient 发布之前,您需要下载文件/内容。File.new 将文件路径作为参数,而不是 url。

于 2013-01-18T20:58:07.893 回答