我的last issue后续问题已经解决了。
我尝试通过返回@Controller
来通过Spring FileSystemResource
下载文件。我收到一个有效的HTTP 200响应,可以在浏览器中查看所有文件的内容,但是我从未收到下载该文件的提示。这是我的方法:
@RequestMapping(method = RequestMethod.GET, headers="Accept=*/*", value = "/download/{fileName:.+}", produces = MediaType.APPLICATION_OCTET_STREAM_VALUE)
@ResponseBody
public FileSystemResource download(@PathVariable String fileName, HttpServletResponse response) throws IOException {
File file = new File(path + '/' + fileName);
response.setContentLength((int)fileName.length());
response.setContentType("application/force-download");
response.setHeader("Content-Disposition","attachment; filename=\"" + fileName + "\"");//fileName);
return new FileSystemResource(file);
}
来自浏览器:
Response Headers
Content-Disposition | attachment; filename="my_data.CSV"
Content-Length | 1712
Content-Type | text/csv
Request Headers
Accept | */*
Accept-Encoding | gzip, deflate
Accept-Language | en-US,en;q=0.5
这里的一切看似有效;知道为什么实际文件没有被退回?干杯
答案 0 :(得分:2)
下载:我使用:
response.setContentType("application/octet-stream");
请注意您的结果" Content-Type |文本/ CSV"与您设置的内容不匹配
答案 1 :(得分:0)
对我有用的最小值是问题中代码的组合,以及来自@pdem的八位字节流内容类型建议。其他一切似乎都是不必要的:
@GetMapping(value = "/testcsv")
public @ResponseBody String getFile(HttpServletResponse response){
String test = "test1, test2, test3";
response.setContentType("application/octet-stream");
response.setHeader("Content-Disposition","attachment; filename=\"test.csv\"");
return test;
}