【发布时间】:2014-06-04 13:28:07
【问题描述】:
我正在为 web 服务编写 api,我需要为用户提供使用此 api 上传文件的能力。
对于我的上传,我使用的是carrierwave,但不确定如何将文件从api请求传递到carrierwave,以及文件应该如何从客户端计算机发送到服务器
【问题讨论】:
标签: ruby-on-rails ruby api carrierwave
我正在为 web 服务编写 api,我需要为用户提供使用此 api 上传文件的能力。
对于我的上传,我使用的是carrierwave,但不确定如何将文件从api请求传递到carrierwave,以及文件应该如何从客户端计算机发送到服务器
【问题讨论】:
标签: ruby-on-rails ruby api carrierwave
基本上它基于 API 使用者使用的工具。如果 API 使用者使用 ruby,则可以通过传递 File 对象来使用它,或者使用 httmultiparty gem 我们可以上传文件。
供您参考https://github.com/jwagener/httmultiparty。如果您需要更多帮助,请告诉我。
【讨论】:
通常我通过 REST API 实现文件上传,方法是允许客户端发送 PUT 请求,请求正文中包含文件的 base64 编码二进制数据。
然后您可以将客户端请求路由到您的 CarrierWave 上传器,该上传器可以使用 FilelessIO.new(Base64.decode64(encoded_file)) 之类的方式解码请求正文中包含的二进制数据
【讨论】:
试试RestClient。它用多部分表单数据等很酷的特性封装了 net/http:
require 'rest_client'
RestClient.post('http://localhost:3000/foo',
:name_of_file_param => File.new('/path/to/file'))
它还支持流式传输。
gem install rest-client 将帮助您入门。
【讨论】: