ruby-on-rails - Rails 3.x 通过带有 S3::No such file or dir 错误的 rest-client 上传文件

标签 ruby-on-rails ruby amazon-s3 paperclip rest-client

我有一个存储在 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/

相关文章:

ruby - 如何与 `each` 迭代器中的前一项进行比较?

amazon-web-services - CloudFormation 不断为我的 S3 存储桶模板的部署抛出 InvalidBucketAclWithBlockPublicAccessError

django - 如何同时使用 Django、sorl-thumbnail、memcached 和 S3?

ruby-on-rails - 对 SQL 的 Activerecord 查询

ruby-on-rails - 一个用于多个域名的 Rails 应用程序

mysql - 事件记录何时真正插入数据库

javascript - 在亚马逊S3上上传大小超过3GB的文件

ruby-on-rails - Rails Activeadmin - 自定义关联选择框

ruby-on-rails - 在 Ruby on Rails 中更改 request.remote_ip 的值

ruby-on-rails - 将自定义属性保存到 Spree 电子商务中的订单模型