我正在使用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,以便客戶端可以下載它。乾杯 –