Я пытаюсь загрузить CSV-файл, когда нажимаю кнопку на моей странице, например:
<span ng-click="downloadCsv()" class="table-settings__control">
<ng-include src="'app/icons/icon.html'" class="table-settings__control-icon">
</ng-include>
{{"table.menu.export" | translate}}
</span>
Мой метод контроллера в AngularJs:
vm.downloadHref = env.api + 'page/export';
function downloadLmTreeCsv() {
myService.downloadCsv(vm.downloadHref, $filter('date')(vm.startDate, 'dd-mm-yyyy H:i:s'));
}
Мое обслуживание в AngularJs:
function downloadCsv(httpPath,date) {
var fileName = generateCsvFileName(date);
$http.get(httpPath,{
responseType: 'arraybuffer'
}).success(function (data, status, headers) {
var textCsv = 'text/scv';
headers = headers();
var filename = fileName + '.' + 'csv';
var contentType = headers['content-type'] || textCsv;
try {
var blob = new Blob([data], {
type: contentType
});
if (navigator.msSaveBlob) {
navigator.msSaveBlob(blob, filename);
} else {
var saveBlob = navigator.webkitSaveBlob || navigator.mozSaveBlob || navigator.saveBlob;
if (saveBlob === undefined) {
throw 'Not supported';
}
saveBlob(blob, filename);
}
}
Но когда я пытаюсь нажать кнопку на моей странице, ничего не происходит, может быть, я использую неправильный метод? Когда я пытаюсь скачать файл, используя только бэкэнд, все работает нормально (через Почтальон). Мой ответ в Symfony:
$response = new StreamedResponse();
$response->setCallback($csv);
$response->headers->set('Content-Type', 'text/csv');
return $response;
Не могли бы вы, пожалуйста, помочь решить эту проблему … И если у вас есть другой способ загрузки CSV-файлов, не могли бы вы показать его. Спасибо!
Задача ещё не решена.
Других решений пока нет …