我正在使用Node.js和Express创建Web API,并打算使用单个响应来同时返回图像和JSON数据。我看到了一个解决方案来指定标头:https://stackoverflow.com/a/18864738/1703565但我不想执行两个get请求。我该如何做到这一点?在单个Node.js + Express响应中发送图像和JSON数据
2
A
回答
1
饼干
你可以返回到图像显示为正常图像的响应体,然后设定相同的请求的会话cookie。会话cookie将包含JSON数据。一旦图像加载,您可以通过javascript从cookie中提取JSON数据。
这将适用于所有浏览器。只有JSON的大小可以返回。最大尺寸看起来是4093 bytes。
图像编码
如果你的JSON是太大,不适合在一个cookie,那么你可以编码图像作为一个base64对象和JSON响应返回的图像数据。
在这种情况下,您必须在画布上重建图像或使用图像数据url格式动态创建图像对象,作为Kevin评论中的url。
图像编码的一个缺点是响应的大小增加。粗略地说,在base64中编码后的图像大小将是原始图像的37% larger。
最终它取决于您的具体需求,以哪种方法最符合您的要求。
2
您可以将图像编码为base64字符串(http://nodejs.org/api/buffer.html#buffer_buf_tostring_encoding_start_end),然后将其作为JSON的一部分返回。
相关问题
- 1. 发送来自NodeJS/Express的JSON响应
- 2. Node.Js/Express + Angular2图像发送和显示图像
- 3. Node.js有没有办法在JSON响应中发送数组?
- 4. 在node.js中如何用json对象数组发送响应?
- 5. Node.js/Express POST数据未发送
- 6. 发送映像文件响应 - node.js
- 7. 在单个HTTP响应中混合使用JSON数据和图像内容
- 8. 发送json响应
- 9. 在node.js中发送HTTP响应
- 10. 在rails中发送响应在json中
- 11. 如何避免使用Express在Node.js中重新发送数据
- 12. 发送两个对象作为应对使用Express和Node.js的
- 13. 在响应中发送数据流 - node.js - 使用node.js的Azure文件服务
- 14. Json响应+ Node.js
- 15. Node.js/Express/Mongoose - 如何发送JSON以及Object的视图?
- 16. Node.js jsdom/express响应缓存?
- 17. Node.js/Express响应事件
- 18. 使用Express的Node.js:更改某个路径的响应数据
- 19. node.js从回调中发送响应
- 20. res.json不发送JSON响应
- 21. 在json中发送编码响应
- 22. 发送JSON响应值
- 23. PHPMailer响应json发送
- 24. 发送HTTP POST和处理JSON响应
- 25. 显示图像作为从Express与Node.js API到Angularjs的响应
- 26. 如何通过Node.js/Express发送图像,以便永久缓存?
- 27. 在android中发送json请求中的图像字节数据?
- 28. 如何同时发送表单数据和图像数据?
- 29. 如何使用Node.js发送和获取Node.js中的JSON数据到HTML中
- 30. 如何在node.js中发送一个200响应
您不必在画布上重新构建图像。请参阅http://www.bigfastblog.com/embed-base64-encoded-images-inline-in-html –
第一个选项对我无效,因为这纯粹是移动应用程序使用的Web API。第二种选择甚至没有发生在我身上......大声笑。非常感谢。然而,你是积极的,这是绝对最好的方法吗? –
@Daniel非常感谢你,我已经解决了我的问题。我不必一起发送图像和数据。我可以在JSON中发送图像的URL,以便客户端可以下载它。干杯 –