Java 使用Spring控制器和PrintWriter下载文件

Java 使用Spring控制器和PrintWriter下载文件,java,spring,rest,spring-mvc,controller,Java,Spring,Rest,Spring Mvc,Controller,我正在迁移一些遗留的servlet代码,在代码的末尾,下载部分就完成了 PrintWriter out = null; out.println("0 " + xyz); response.setContentType("text/html;charset=UTF-8"); response.setCharacterEncoding("UTF-8"); response.setHeader("Content-dispositio

我正在迁移一些遗留的servlet代码,在代码的末尾,下载部分就完成了

PrintWriter out = null;
out.println("0 " + xyz);
response.setContentType("text/html;charset=UTF-8");
response.setCharacterEncoding("UTF-8");
response.setHeader("Content-disposition", "attachment;filename=" + test + abc + ".xyz");
我正试图将这段代码移到Spring上,但我不知道我的Spring控制器应该如何让下载工作。现在我有以下几点

@GetMapping(value = "/testapi/{id}/{mode}")
public @ResponseBody
ResponseEntity<FileSystemResource> test(HttpServletResponse response, @RequestHeader(value = "Authorization") String authHeader,
       @PathVariable(value = "id") String id, @PathVariable(value = "mode") String mode) throws Exception {

PrintWriter out = null;
out.println("0 " + xyz);
response.setContentType("text/html;charset=UTF-8");
response.setCharacterEncoding("UTF-8");
response.setHeader("Content-disposition", "attachment;filename=" + test + abc + ".xyz");
 
return response;   
@GetMapping(value=“/testapi/{id}/{mode}”)
公共@ResponseBody
ResponseEntity测试(HttpServletResponse,@RequestHeader(value=“Authorization”)字符串authHeader,
@PathVariable(value=“id”)字符串id、@PathVariable(value=“mode”)字符串模式)引发异常{
PrintWriter out=null;
out.println(“0”+xyz);
setContentType(“text/html;charset=UTF-8”);
响应。setCharacterEncoding(“UTF-8”);
response.setHeader(“内容处置”、“附件;文件名=“+test+abc+”.xyz”);
返回响应;
}


我对PrintWriter以及如何将其与Spring控制器配合使用了解不够,因此在此提供任何指导将不胜感激。

您从哪里获得响应数据?
text/html
作为任何形式的下载都很少见。这是否回答了您的问题?不,它没有回答我的问题,因为我的问题是专门使用PrintWriter作为输出流的。我不能不使用PrintWriter。我还试图在响应时强制刷新,但没有成功。对于文件类型,我使用的是一种特定的文件类型,我不能在这里公开,但是原始的servlet代码的类型是text/html,并且工作正常。