Ajax响应对于word文档为空,对于txt和pdf则为空

Ajax response is null for word docs, fine for txt and pdf

本文关键字:txt 对于 pdf 响应 word 文档 Ajax      更新时间:2023-09-26

我正试图使用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时才会发生这种情况。