我想要的是当我访问/getcsv
下载csv file
@RequestMapping(value = "/getcsv", method = RequestMethod.GET)
public void getCSV(HttpServletResponse response){
String csv = "a,b";
response.setContentType("text/csv");
//what to do now?
}
我不知道如何引发包含我的字符串的csv file
的下载。
您可以在 outputStream of Response 中写入数据。
@RequestMapping(value = "/getcsv", method = RequestMethod.GET)
public void getCSV(HttpServletResponse response){
String csv = "a,b";
response.setContentType("application/octet-stream");
response.setHeader("Content-Disposition", "fileName.csv");
response.setHeader("Access-Control-Expose-Headers","Authorization, Content-Disposition");
try (PrintWriter pw = new PrintWriter(response.getOutputStream())) {
pw.write(csv);
}
}
您可以尝试以下代码。
@PostMapping(value = "/getcsv", produces = MediaType.APPLICATION_OCTET_STREAM_VALUE)
public ResponseEntity<?> downloadFile(@RequestParam("fileName") String fileName) {
String dirPath = "E:/some-directory-path/";
byte[] fileBytes = null;
try {
fileBytes = Files.readAllBytes(Paths.get(dirPath + fileName));
} catch (IOException e) {
e.printStackTrace();
}
return ResponseEntity.ok()
.contentType(MediaType.APPLICATION_OCTET_STREAM)
.header(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename="" + fileName + """)
.body(fileBytes);
}
您必须设置为应用程序八进制流才能下载任何文件。