zkrvndm
@zkrvndm
Архитектор решений

Как скачать Blob при помощи jQuery.ajax?

Возможно ли это сделать без установки плагинов и используя только встроенные в jQuery возможности?
  • Вопрос задан
  • 921 просмотр
Решения вопроса 1
zkrvndm
@zkrvndm Автор вопроса
Архитектор решений
Отвечаю на свой вопрос спустя много-много лет =)

Оказывается можно скачать Blob при помощи функции jQuery.ajax() и делается это довольно просто:
$.ajax({
    url: '/',
    type: 'GET',
    xhrFields: { responseType: 'blob' },
    dataType: 'binary',
    success: function(blob) {
        console.log('Успешно скачан файл:', blob);
    },
    error: function(xhr, status) {
        console.log('При загрузке файла произошла ошибка:', xhr);
    }
});

При этом я изучал этот вопрос в интернете, в том числе на иностранных форумах и там какую-то хрень пишут, то предлагают для решения задачи специальный плагин поставить, то килотонны кода для правки самой функции...

В родной документации тоже ни слова про этот способ, нашел метод буквально случайно, чуть ли не методом тыка.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
MrDecoy
@MrDecoy Куратор тега JavaScript
Верставший фронтендер
Исходя из наличия тэга jQuery в вопросе:
По умолчанию jQuery не умеет в бинарный запрос.
Нужно подключить дополнительную мини либу: jQuery binnary transport
Пример скачивания можно найти по ссылке.
Пример загрузки зависит от конкретной задачи. Но если в общих чертах, то вот так:
$.ajax({
    url: url,
    type: 'POST',
    processData: false,
    data: arrayBuffer,
    headers: {
        "content-length": arrayBuffer.byteLength
    }
});

arrayBuffer - blob или, например, результат считывания файла readAsArrayBuffer
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы