我正在为webservice编写api,我需要为用户提供使用此api上传文件的能力。
对于我的上传,我使用的是carrierwave,但不确定如何将文件从api请求传递到carrierwave,以及文件应该如何从客户端计算机发送到服务器
答案 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。它将net / http与多部分表单数据等很酷的功能封装在一起:
require 'rest_client'
RestClient.post('http://localhost:3000/foo',
:name_of_file_param => File.new('/path/to/file'))
它还支持流媒体。
gem install rest-client
会让你开始。