Я пишу 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();
}
}