Web服务的多部分响应

时间:2013-08-12 16:27:16

标签: ruby-on-rails web-services httpresponse multipart

在一个用Rails编写的Web服务中,我想回答一个文件以及其他信息。

为此,我考虑使用多部分数据进行响应。如何使用文件和json发送多部分响应?

如果有更好的方法,请告诉我。请注意,无法在我正在发送的文件中添加额外数据。

面对问题的额外点,即同时发送文件和数据。我已经通过执行多部分请求完成了这项工作,但是如果有更好的方法,我想知道。

3 个答案:

答案 0 :(得分:2)

我不确切知道您正在使用哪种前端以及您的浏览器兼容性要求是什么,或者您需要webservice才能与其他应用程序集成,但假设您通过ajax与服务器进行通信而您的应用是在现代浏览器中运行(或者您可以使用Flash插件),您可以将文件内容作为base64编码的字符串作为json响应的一部分返回。所以在rails控制器中你会有这样的东西:

render json: {success: true, file: {name: 'invoice.pdf', data: Base64.encode64(@file.read), extra_info: 'some info'}}

在客户端,您可以处理该json,从中获取所需的所有元数据,并让用户将文件保存到他们的计算机。为此,您可以使用flash pluginnative api implementation

通过这种方式,您可以将带有所需元数据的几个文件返回给用户,在客户端用户可以根据需要保存文件。此外,只要他们可以解析json,其他应用程序就可以使用相同的Web服务。

答案 1 :(得分:0)

尝试使用gem'curb'或'rest-client'gem。

  

https://github.com/rest-client/rest-client

  

https://github.com/taf2/curb

答案 2 :(得分:0)

我相信你已经做了一些谷歌搜索了,你看过this了吗?对于你想要完成的事情似乎有一个Gem,然而宝石似乎已经很老了。