Я использую службу сохранения углового файла https://github.com/alferov/angular-file-saver для загрузки файлов. Загрузка хорошая, но при попытке открыть документ Word я получаю файл поврежден, и слово не может его открыть, и если поместить его api прямо в файл браузера, то хорошо, когда я его открываю, поэтому я полагаю, что blob делает что-то для этой проблемы... Для.txt файлы не повреждаются, это хорошо только для.docx и для.jpeg или.png. Ниже приведен мой короткий код для загрузки файлов.
function downloadDocument(fileId, fileName, documentExt) {
var deferred = $q.defer();
var id = encodeURIComponent(fileId);
Restangular.one('download?fileId=' + id).get().then(function(data) {
var file = new Blob([data]);
if (documentExt && documentExt !== 'undefined') {
FileSaver.saveAs(file, fileName + '.' + documentExt);
}
else {
FileSaver.saveAs(file, fileName);
}
});
return deferred.promise;
}
вы можете использовать ниже код для сохранения вашего file--
function downloadDocument(fileId, fileName, documentExt) {
var deferred = $q.defer();
var id = encodeURIComponent(fileId);
Restangular.one('download?fileId=' + id).get().then(function(data) {
// try to use data.data or data in blob object
var file = new Blob([data.data], {
type: 'application/octet-binary'
});
var fileUrl = URL.createObjectURL(file);
// for IE 10+
if (window.navigator.msSaveOrOpenBlob) {
window.navigator.msSaveOrOpenBlob(file, fileName+'.'+documentExt);
} else {
var element = document.createElement('a');
element.href = fileUrl;
element.setAttribute('download', fileName+'.'+documentExt);
element.setAttribute('target', '_blank');
document.body.appendChild(element);
element.click();
}
});
return deferred.promise;
}