2017-01-19 15 views
1

Я сделал микро-службу Java для экспорта таблицы из базы данных в файл CSV и получить ее в браузере, выполнив следующие действия: Downloading a CSV File in Browser by using Java Это работает хорошо, и я получаю файл в браузер, когда я называю URL (путем копирования и вставки в браузере): http://localhost:8080/api/fileDownload/2Угловой получить CSV-файл в браузере, вызывая URL-адрес

в угловой части, когда я называю URL в моем приложении я вижу в консоли:

Request URL:http://localhost:8080/api/fileDownload/2 
Request Method:GET 
Status Code:200 

в предварительный просмотр и ответ консоли, у меня также есть содержимое моего файла. Поэтому кажется, что все выглядит хорошо, но проблема в том, что мой браузер не загружает файл автоматически.

Мой контроллер:

vm.downloadFunction=function(){ 
    FileDownload.download.query({id:2},function(data){ 
    }); 
}; 

Мое мнение:

<label data-ng-click="addModule.downloadFunction()" class="btn btn-link btn-file"> 
        Download <input type="button" class="hidden"> 
       </label> 

И обслуживание:

voltApp.factory('FileDownload', function ($resource) { 
return{ 
    download: $resource('/api/fileDownload/:id', {}, { 
     query: {method: 'GET', params: {id:'@id'},isArray:false}, 
     update:{method: 'PUT'} 
    }) 
}; 

});

Что я делаю неправильно?

+0

Это сообщение было очень тоже Каталог путешествий! http://stackoverflow.com/questions/14215049/how-to-download-file-using-angularjs-and-calling-mvc-api – John

ответ

0

Рассмотрите возможность использования ngFileSaver

Пример:

JS

function ExampleCtrl(FileSaver, Blob) { 
    var vm = this; 

    vm.val = { 
    text: 'Hey ho lets go!' 
    }; 

    vm.download = function(text) { 
    var data = new Blob([text], { type: 'text/plain;charset=utf-8' }); 
    FileSaver.saveAs(data, 'text.txt'); 
    }; 
} 

angular 

     .module('fileSaverExample', ['ngFileSaver']) 
     .controller('ExampleCtrl', ['FileSaver', 'Blob', ExampleCtrl]); 

HTML

<div class="wrapper" ng-controller="ExampleCtrl as vm"> 
    <textarea 
    ng-model="vm.val.text" 
    name="textarea" rows="5" cols="20"> 
     Hey ho let's go! 
    </textarea> 
    <a href="" class="btn btn-dark btn-small" ng-click="vm.download(vm.val.text)"> 
    Download 
    </a> 
</div>