Я пытаюсь загрузить файл, чтобы пользователи могли открывать или сохранять. Они нажимают на имя файла:Загрузка файла с 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();
вы можете использовать этот –