Страницы

Поиск по вопросам

вторник, 23 октября 2018 г.

Промежуточная загрузка файла

на некоторых сайтах, при загрузке файла, файл "скачивается в браузер", после прохождения загрузки, файл отдается браузеру уже в скачанном ввиде. Как это происходит? Что за технология? И как такое сделать?


Ответ

Это новинки, поэтому осторожно отнеситесь к совместимости.
XMLHttpRequest может возвращать в качестве результата Blob. Да, обычный XHR:
var oReq = new XMLHttpRequest(); oReq.open("GET", "/myfile.png", true); oReq.responseType = "blob";
oReq.onload = function(oEvent) { var blob = oReq.response; // ^ вот этот Блоб };
oReq.send();
...за прогрессом скачивания можно следить, задав обработчик onprogress
Из Blobа можно сделать URL:
objectURL = URL.createObjectURL(blob);
...и отдать его на "скачивание" любым удобным вам способом. Блоб существует исключительно на клиенте, и если существует, то уже целиком, поэтому "скачивание" блоба будет по факту сохранением уже загруженного его содержимого.
Блоб можно сформировать огромным количеством способов, XHR только один из них.

Комментариев нет:

Отправить комментарий