Spring boot rest api csv скачать не устанавливать имя файла с расширением - PullRequest
0 голосов
/ 23 апреля 2020

Я пишу REST API для загрузки CSV с использованием библиотеки OpenCSV. Я устанавливаю Content-Disposition для установки загрузки с именем файла. В настоящее время файл загружен, но имя файла не установлено или не установлено расширение. Он загружается как download без расширения, но данные открываются, когда я его открываю.

Здесь, в контроллере, я устанавливаю Content-Disposition и Content-Type для ответа.

  @GetMapping("/download")
  public void download(HttpServletResponse response) throws IOException {
    response.setContentType("text/csv;charset=UTF-8");
    response.setHeader("Content-Disposition", "attachment; file=customers.csv");
    service.download(response.getWriter());
  }

Здесь я записать данные CSV в средство записи ответов в службу.

  public void download(PrintWriter writer) {
    List<Resource> resources = this.getData();
    try (
      CSVWriter csvWriter = new CSVWriter(writer,
                    CSVWriter.DEFAULT_SEPARATOR,
                    CSVWriter.NO_QUOTE_CHARACTER,
                    CSVWriter.DEFAULT_ESCAPE_CHARACTER,
                    CSVWriter.DEFAULT_LINE_END);
    ){
      csvWriter.writeNext(this.getCsvHeader());
      for (Resource resource : resources) {
        csvWriter.writeNext(getCsvData(resource));
      }
    }catch (IOException e) {
      log.info("Writing CSV error {}",e.toString());
      throw new FailedException();
    }
  }

1 Ответ

2 голосов
/ 23 апреля 2020

Content-Disposition должен использовать атрибут "filename"

response.setHeader("Content-Disposition", "attachment; filename=customers.csv");
...