Java 从Spring控制器强制下载CSV

Java 从Spring控制器强制下载CSV,java,spring,Java,Spring,我的后续问题已经解决 我试图通过返回一个文件系统资源通过Spring@Controller下载一个文件。我收到一个有效的HTTP 200响应,可以在浏览器中查看文件的所有内容,但是我从未收到下载文件的提示。以下是我的方法: @RequestMapping(method = RequestMethod.GET, headers="Accept=*/*", value = "/download/{fileName:.+}", produces = MediaType.APPLICATION_OCTE

我的后续问题已经解决

我试图通过返回一个
文件系统资源
通过Spring
@Controller
下载一个文件。我收到一个有效的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
这里的一切似乎都是有效的;知道为什么没有返回实际文件吗?为下载干杯:我使用:

response.setContentType("application/octet-stream");

请注意,您的结果“Content Type | text/csv”与您设置的不匹配

对我有效的最小值是问题中代码的组合,再加上@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;
}

我用过这个,但我的内容类型保持不变。我将调试并查看何时设置类型,因为我没有显式定义text/csv任何更新?就连我也面临着同样的问题。一切似乎都是正确的。