使用api和carrierwave上传文件

时间:2014-06-04 13:28:07

标签: ruby-on-rails ruby api carrierwave

我正在为webservice编写api,我需要为用户提供使用此api上传文件的能力。

对于我的上传,我使用的是carrierwave,但不确定如何将文件从api请求传递到carrierwave,以及文件应该如何从客户端计算机发送到服务器

3 个答案:

答案 0 :(得分:1)

通常我通过允许客户端在请求主体内发送带有文件的base64编码二进制数据的PUT请求来实现REST API上的文件上传。

然后您可以将客户端请求路由到您的CarrierWave上传器,它可以使用FilelessIO.new(Base64.decode64(encoded_file))

之类的内容解码请求正文中包含的二进制数据

答案 1 :(得分:1)

基本上它基于API使用者使用的工具。如果API使用者正在使用ruby,那么可以通过传递File对象来使用它,或者使用httmultiparty gem我们可以上传该文件。

供您参考https://github.com/jwagener/httmultiparty。如果您需要更多帮助,请告诉我。

答案 2 :(得分:0)

试试RestClient。它将ne​​t / http与多部分表单数据等很酷的功能封装在一起:

require 'rest_client'
RestClient.post('http://localhost:3000/foo', 
  :name_of_file_param => File.new('/path/to/file'))

它还支持流媒体。

gem install rest-client会让你开始。