Я пытаюсь выполнить загрузку файла через angular.js Файл приходит с сервера в двоичном формате, тип контента application/octet-stream
Загрузка архива с помощью углового
Загрузка является GET с использованием $resource
. Рассматривая параметр, переданный обратному вызову (он называется content
), это объект, содержащий массив байтов, а также список свойств для $resource
.
Пробовал несколько способов обслуживания файла, но безуспешно.
Первый из них:
...
var a = document.createElement('a');
a.href = "data:attachment/zip," + content;
a.download = zipName;
a.click();
В этом случае содержимое файла почтового индекса является [object Object]
Я попытался извлекая массив из объекта и соединения все в строковую переменную. Почтовый файл в этом случае намного больше обычного размера. Мне пришлось установить isArray: true
в службу, которая вызывает $resource
, иначе не было способа извлечь содержимое байта из объекта ответа.
Вот как я это сделал:
var str = '';
for (var i = 0; i < content.length; i++) {
str += content[i][0];
}
...
var a = document.createElement('a');
a.href = "data:attachment/zip," + str;
a.download = zipName;
a.click();
Стоит отметить, что вызов encodeURI
на str
приращений резко размером загруженного почтового индекса, но архив остается недействительным.
Я также попытался создать Blob
из str
и установить тип контента application/octet-stream
, без везения.
var blob = new Blob([str], {'type':"application/octet-stream"});
a.href = window.URL.createObjectURL(blob);
...
Не знаю, что я здесь отсутствует, но это выглядит довольно проблема получения правильного формата для содержимого массива байтов и установка правильного href
перед тем имитируя щелчок для загрузки.
Справка приветствуется.
Благодаря
помните, что вы можете столкнуться с проблемами загрузки с IE11 http://stackoverflow.com/questions/18755750/saving-text-in-a-local-file-in-internet-explorer-10/20927897# 20927897 – spankmaster79