我正在尝试使用ajax请求通过二进制数据获取文件,然后将其转换为base64。这适用于txt和pdf文件,但在我尝试docx时失败。响应为null,ResponseText是DOMExpection。如果我直接在chrome中访问url,则会下载文件fin。 docx文件有什么特别之处吗?这是我的代码。
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();
}
我也尝试过使用Accept标题,但没有运气。打开后我就这么说。
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');
答案 0 :(得分:0)
事实证明,只有当文件的长度为0时才会发生这种情况。