我想將用戶從機器中選擇的圖像連同表單數據一起發送到JSON對象併發送到服務器。我正在使用Node作爲服務器。是否有可能將圖像放入JSON對象以及其他表單元素並在Node中讀取?使用Ajax POST請求將圖像和JSON數據發送到服務器?
回答
我遇到的常見方式是使用Base64字符串方法:將圖像編碼爲Base64字符串,並將其設置爲您發送到服務器的JSON對象的一部分。
另一種方法似乎是在JSON中使用二進制數據,但我從來沒有嘗試過,所以沒有從我這麼多的信息。
Here's一個代碼示例在Javascript中執行Base64編碼。具體看下面的方法
function getBase64Image(imgElem) {
// imgElem must be on the same server otherwise a cross-origin error will be thrown "SECURITY_ERR: DOM Exception 18"
var canvas = document.createElement("canvas");
canvas.width = imgElem.clientWidth;
canvas.height = imgElem.clientHeight;
var ctx = canvas.getContext("2d");
ctx.drawImage(imgElem, 0, 0);
var dataURL = canvas.toDataURL("image/png");
return dataURL.replace(/^data:image\/(png|jpg);base64,/, "");
}
我正在使用Python Flask框架,所以我怎麼能從base64字符串中獲取圖像回來python? –
有一種方法可以實現這一點:使用圖像數據。
在Javascript中,在客戶端,FileReader將允許您讀取二進制圖像數據,並將它們轉換爲base64編碼的字符串。
在客戶端:編碼圖像
var file = $('.file-upload > input')[0].files[0];
function upload(file) {
var reader = new FileReader();
// when image data was read
reader.onload = function(event) {
// I usually remove the prefix to only keep data, but it depends on your server
var data = event.target.result.replace("data:"+ file.type +";base64,", '');
// make here your ajax call
$.ajax({
url: 'and_so_on',
json: {
data: data
}
});
// read data from file
reader.readAsDataURL(file);
}
在服務器端,您將收到的base64可以easilly與緩衝構造
var buffer = new Buffer(data, 'base64');
翻譯成二進制被警告該FileReader是not supported by all browsers
我做什麼來支持所有瀏覽器? – Phoenix
您也可以使用[btoa()](https://developer.mozilla.org/en-US/docs/Web/API/WindowBase64/btoa)([瀏覽器支持](http://caniuse.com/) #feat = atob-btoa))函數與reader.readAsBinaryString(file)一起創建base64字符串(var data = btoa(event.target.result))。然後你不需要做字符串替換。 –
btoa也只支持IE10 –
- 1. Android - 使用POST請求將圖像文件發送到服務器數據庫
- 2. HttpURLConnection的POST請求 - 不能將數據發送到服務器
- 3. 通過AsyncHttpClient將JSON作爲POST請求發送到服務器
- 4. 發送HTTPS POST請求到服務器
- 5. Ajax將圖像發送到服務器
- 6. Android - 發送JSON請求到服務器
- 7. JQuery Ajax Post無法發送數據(json)到express.js服務器
- 8. 發送json數據到服務器返回400錯誤請求
- 9. 使用Retrofit2將圖像上載到服務器POST請求
- 10. 如何發送$ .ajax POST請求從客戶端到服務器
- 11. 發送帶有JSON的POST請求到一個node.js服務器
- 12. 與AJAX請求發送圖像數據
- 13. 向服務器發送POST請求
- 14. 通過ajax/jQuery向服務器發送ajax POST請求
- 15. 使用jQuery $ .ajax發送數據到服務器Post方法
- 16. POST請求發送json數據java HttpUrlConnection
- 17. 發送POST請求後身體不發送到服務器
- 18. AngularJS POST請求不發送JSON數據
- 19. 節點JS如何將POST圖像和請求數據一起發送到另一個服務器/ api
- 20. 服務器沒有看到在JavaScript發送的JSON ajax請求
- 21. 使用POST POST AJAX請求WCF服務
- 22. 將JSON POST請求發送到外部域而無需訪問服務器
- 23. 如何將POST請求發送到REST Web服務併發送JSON?
- 24. 無法將jQuery POST請求跨域發送到PHP服務器
- 25. 在POST請求中將圖像附加到golang服務器
- 26. 通過AJAX發送JSON POST請求
- 27. jQuery的不AJAX POST請求發送JSON
- 28. 通過.ajax發送json數據作爲POST請求調用
- 29. 將json從發佈請求發送到nodejs服務器
- 30. 發送jpg圖像到服務器(json)
肯定它是可能的,你是什麼代碼到目前爲止? – Aras