在一个用 Rails 编写的 Web 服务中,我想用一个文件和附加信息来回答。
为此,我考虑使用多部分数据进行响应。如何使用文件和 json 发送多部分响应?
如果有更好的方法来做到这一点,请告诉我。请注意,无法在我发送的文件中添加额外数据。
面对问题的加分项,即同时发送文件和数据。我已经通过执行多部分请求来实现这一点,但是如果有更好的方法来做到这一点,我想知道。
最佳答案
我不知道您正在使用哪种前端以及您的浏览器兼容性要求是什么,或者您只需要与其他应用程序集成的网络服务,但假设您通过 ajax 与服务器进行通信并且您的应用程序以现代方式运行浏览器(或者您可以使用 flash 插件),您可以将文件内容作为 base64 编码字符串作为 json 响应的一部分返回。所以在 rails Controller 中你会有这样的东西:
render json: {success: true, file: {name: 'invoice.pdf', data: Base64.encode64(@file.read), extra_info: 'some info'}}
在客户端,您可以处理该 json,从中获取您需要的所有元数据,并让用户将文件保存到他们的计算机上。为此,您可以使用 flash plugin或 native api implementation
通过这种方式,您可以将带有任何元数据的文件返回给用户,并且在客户端用户可以根据需要保存文件。此外,只要其他应用程序可以解析 json,它们就可以使用相同的 Web 服务。
关于ruby-on-rails - Web 服务的多部分响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18192044/