Я пытаюсь экспортировать CSV-файл из браузера.
Итак, поток следующий. Когда я в GUI нажимаю на кнопку экспорта, он должен создать CSV-файл в бэкэнде и показать его мне в браузере (как загружено).
Но это не случилось.
Когда я нажимаю на кнопку, он вызывает мой метод из бэкэнда, создает файл CSV и сохраняет его в папке, но он не показывает мне этот файл в браузере.
Вот мой код:
public void export(HttpServletResponse response) throws IOException {
try {
// create FileWriter object with file as parameter
FileWriter outputfile = new FileWriter("exported.csv");
// create CSVWriter object filewriter object as parameter
CSVWriter writer = new CSVWriter(outputfile);
// create a List which contains String array
List<String[]> data = new ArrayList<String[]>();
data.add(new String[] { "Name", "Class", "Marks" });
data.add(new String[] { "Aman", "10", "620" });
data.add(new String[] { "Suraj", "10", "630" });
writer.writeAll(data);
// closing writer connection
writer.close();
response.setContentType("application/ms-excel"); // or you can use text/csv
response.setHeader("Content-Disposition", "attachment; filename=exported.csv");
}
catch (IOException e) {
e.printStackTrace();
}
}
EDIT:
угловая часть:
.service('ExportService', function($http) {
this.export = function() {
return $http.post('/data/export', { responseType: 'application/octet-stream' });
};
})
$scope.export = function() {
ExportService.export()
.success(function(data, status, headers, config) {
var blob = new Blob([data], { type: 'application/octet-stream' });
saveAs(blob, 'Exported - exported.csv');
$.growl({ message: '<br>successfully exported', title: '<b>SUCCESS</b>' }, { type: 'success' });
})
.error(function(data, status, headers, config) {
$.growl({ message: '<br>Exporting failed', title: '<b>ERROR</b>' }, { type: 'danger' });
});
}
Кто-нибудь знает, в чем может быть проблема?