Получение поврежденного текстового документа при использовании FileSaver и Blob в angularjs

0

Я использую службу сохранения углового файла 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;
        }
Теги:
filesaver.js
blob

1 ответ

0

вы можете использовать ниже код для сохранения вашего 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;
        }
  • 0
    Ну, я попробовал этот код и все еще получаю ошибку: snag.gy/HwE1mg ....
  • 0
    Можете ли вы предоставить мне свой серверный код?
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню