我寫了一些AJAX獲取文件客戶端,以便我可以將其發回服務器。反對意見被取爲ArrayBuffer
。但是,將這個二進制文件發回服務器進行保存時,我需要在該文件中包含一些元數據。我試過用其他字符串和對象包裝ArrayBuffer
,但是當我檢查數據服務器端時,它似乎只傳輸了ArrayBuffer
的長度。POSTing一個ArrayBuffer包裹在一個對象內
我試圖通過這個答案轉換ArrayBuffer
字符串:
https://stackoverflow.com/a/11058858/449511。
但是,我ArrayBuffer
的bytelength是519843,這導致例外:
Uncaught RangeError: ArrayBuffer length minus the byteOffset is not a multiple of the element size.
我的理解ArrayBuffers
是稀疏的,我看過MDN文檔,但無法找到其他東西。我很感激任何進一步的資源或想法,我可以如何將此ArrayBuffer
轉換爲字符串或將我的ArrayBuffer
轉換爲對象。
這裏是我的AJAX代碼片段:
$.ajax({
type: 'POST',
url: 'http://localhost:5000/',
data: {fname: f, url:u, binary:b}, // the binary is an ArrayBuffer
});
您是否嘗試過使用'UInt8Array'而不是'UInt16Array'? –
我其實只是試過,而且工作。爲什麼是這樣?我的印象是,長度不能被8或16整除,所以這些是錯誤的寬度陣列試圖將它們投入。 – user449511
8 = 8位= 1字節 –