我試圖使用ajax請求通過二進制數據獲取文件,然後將其轉換爲base64。這適用於txt和pdf文件,但在嘗試使用docx時會失敗。響應爲null,並且ResponseText是DOMExpection。如果我直接在chrome中訪問url,它會下載文件fin。 docx文件有什麼特別之處嗎?這是我的代碼。對於Word文檔,Ajax響應爲空,對於txt和pdf很好
function _arrayBufferToBase64(buffer) {
var binary = '';
var bytes = new Uint8Array(buffer);
var len = bytes.byteLength;
for (var i = 0; i < len; i++) {
binary += String.fromCharCode(bytes[i]);
}
return window.btoa(binary);
}
function download(fileName, fileDownloadLocation) {
var oReq = new XMLHttpRequest();
oReq.onload = function(data) {
var base64str = _arrayBufferToBase64(this.response);
//Do custom stuff here
};
oReq.responseType = "arraybuffer";
oReq.open("get", fileDownloadLocation, true);
oReq.send();
}
我也嘗試擰接受頭,但沒有運氣。打開後我打電話給我。
oReq.setRequestHeader('Accept', 'application/vnd.openxmlformats-officedocument.wordprocessingml.document,application/octet-stream,text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8');
長度您是否嘗試過使用的'onreadystatechange'代替'onload'發生什麼呢?我不認爲'onload'是標準的。 – plalx
是的,我試過使用onreadystatechange,並沒有奏效。 – Nikhil