通过Javascript将二进制数据下载为文件

时间:2012-03-08 15:47:13

标签: javascript html5 jquery binary-data

我正在对返回二进制数据的API进行ajax调用。我想知道是否可以获取二进制数据并在新窗口中为客户端显示它?这就是我现在正在做的事情。问题是,文档打开了,但它完全是空白的。

$.ajax({
    type: "POST",
    url: apiURL,
    data: xmlRequest,
    complete: function(xhr, status) {
        var bb = new window.WebKitBlobBuilder();

        // Append the binary data to the blob
        bb.append(xhr.responseText);

        var blobURL = window.webkitURL.createObjectURL(bb.getBlob('application/pdf'));
        window.open(blobURL);
    }
});

有什么想法吗?

1 个答案:

答案 0 :(得分:7)

好的,我明白了。我必须将responseType指定为'array buffer':

function downloadPDF() {

    var xhr = new XMLHttpRequest();
    xhr.open('POST', API_URL, true);
    xhr.responseType = 'arraybuffer';

    xhr.onload = function(e) {
        if (this.status == 200) {
            var bb = new window.WebKitBlobBuilder();
            bb.append(this.response); // Note: not xhr.responseText

            var blob = bb.getBlob('application/pdf');
            var blobURL = window.webkitURL.createObjectURL(blob);

            window.open(blobURL);
        }
    };

    xhr.send(createRequest());
}