на некоторых сайтах, при загрузке файла, файл "скачивается в браузер", после прохождения загрузки, файл отдается браузеру уже в скачанном ввиде. Как это происходит? Что за технология? И как такое сделать?
Ответ
Это новинки, поэтому осторожно отнеситесь к совместимости.
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 только один из них.
Комментариев нет:
Отправить комментарий