Правильный способ загрузки файла CSV в приложении Vue на стороне клиента - PullRequest
0 голосов
/ 09 октября 2018

У меня есть приложение 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?

...