2016-10-31 3 views
1

Я пытаюсь загрузить файл, чтобы пользователи могли открывать или сохранять. Они нажимают на имя файла:Загрузка файла с angularjs

<a href data-ng-click="getFile(file.id)"> 
        {{file.name}}</span> 
       </a> 

Тогда это вызывает метод в угловых JS файл

$scope.getFile= function ($id) { 
    var getInputFilePromise = fileFactory.getInputFile($id); 
    getFilePromise.success(function ($data) { 
     var blob = new Blob([$data], {type: 'text/csv'}); 
     //code to allow downloading file 
}); 
} 

Завод имеет следующий код, чтобы получить байт [] из контроллера Java:

getFile: function ($id) { 
     return $http.get('/downloadFile?id=' + $id, {responseType:'arraybuffer'}); 
    } 

Как вы можете видеть из моего метода getFile, я конвертирую данные в blob, но я не могу отправить это в html. Я пробовал множество решений, размещенных здесь, но никто не работал.

var blob = new Blob([$data], {type: "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"}); 
     var objectUrl = URL.createObjectURL(blob); 
     window.open(objectUrl); 

Вышеприведенный фрагмент кода позволяет загрузить файл, но Excel не может его открыть.

Любая помощь будет большой, поскольку я новичок в угловой. Я также хотел бы избежать использования FileSaver.js

Я также пробовал следующее, но он не работает.

var hiddenElement = document.createElement('a'); 
      hiddenElement.href = 'data:attachment/csv,' + encodeURI($data); 
      hiddenElement.target = '_blank'; 
      hiddenElement.download = fileName; 
      hiddenElement.click(); 
+1

вы можете использовать этот

ответ

Смежные вопросы