【发布时间】:2020-08-06 13:44:57
【问题描述】:
我正在使用 OpenCSV 库编写用于 CSV 下载的 REST API。我正在设置 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();
}
}
【问题讨论】:
标签: java spring-boot