У меня есть приложение Vue, в котором у меня есть метод "downloadCsv".Когда кнопка нажата, этот метод вызывается и выполняется следующий вызов GET rest:
@GetMapping(value = "downloadCsv")
public ResponseEntity<Resource> exportSubmitted() throws IOException {
//Generates CSV file and returns fileName
String filePath = myService.generateCSV();
InputStreamResource resource = new InputStreamResource(new FileInputStream(filePath));
return ResponseEntity.ok()
.header(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=\"" + "data.csv" + "\"")
.body(resource);
}
Когда я вызываю эту конечную точку напрямую, т.е. localhost:8080/downloadCsv
в браузере (chrome), CSV загружается.
Однако, когда я вызываю эту конечную точку из моего приложения Vue по щелчку, то есть:
axios.get(endpoint)
.then(result => {
const blob = new Blob([result], {type: 'text/csv'});
FileSaver.saveAs(blob, 'download.csv');
});
Мне не удается загрузить файл из браузера.
Как правильно вызвать конечную точку отдыха, которая возвращает файл, и загрузить его в браузере в Vue?