0

ajax リクエストを使用してバイナリ データ経由でファイルを取得し、それを base64 に変換しようとしています。これは txt ファイルと pdf ファイルでは正常に機能しますが、docx を試すと失敗します。Response は 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');
4

1 に答える 1

0

これは、ファイルの長さが 0 の場合にのみ発生することがわかりました。

于 2013-08-20T05:15:19.777 に答える