Скачать двоичные данные в виде файла через Javascript - PullRequest
7 голосов
/ 08 марта 2012

Я делаю ajax-вызов API, который возвращает двоичные данные.Мне интересно, можно ли взять эти двоичные данные и отобразить их для клиента в новом окне?Это то, что я делаю прямо сейчас.Проблема в том, что документ открывается, но он совершенно пустой.

$.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 Ответ

7 голосов
/ 10 марта 2012

Хорошо, я понял это. Я должен был указать responseType как «буфер массива»:

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());
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...