java后台生成文件给前端下载(response输出流)

1、设置 ContentType
response.setContentType("application/x-download");

2、设置文件名,并指定编码格式

fileName = URLEncoder.encode("浏览器要显示的文件名", "UTF-8");
response.setCharacterEncoding("UTF-8");

3、将文件名 addHeader

response.addHeader("Content-Disposition", "attachment;filename=" + fileName);

4、读取文件流写入 response

File file = new File(filePath);
try {
       InputStream stream = new FileInputStream(file);

       ServletOutputStream out = response.getOutputStream();

       byte buff[] = new byte[1024];
       int length = 0;

       while ((length = stream.read(buff)) > 0) {
            out.write(buff,0,length);
       }
       stream.close();

       out.close();

       out.flush();

} catch (IOException e) {
       e.printStackTrace();
}

  controller 接口下载文件简单案例

@RestController
@RequestMapping("/test")
public class TestController {
@GetMapping(
"/download") public void download(HttpServletResponse response) throws UnsupportedEncodingException { String filename = URLEncoder.encode("文件名.jpg", "UTF-8"); response.setContentType("application/x-download"); response.setHeader("Content-Disposition", "attachment;filename=" + filename);//浏览器上提示下载时默认的文件名 try (ServletOutputStream out = response.getOutputStream(); InputStream stream = new FileInputStream("D:\\最新测试.xls")){//读取服务器上的文件 byte buff[] = new byte[1024]; int length = 0; while ((length = stream.read(buff)) > 0) { out.write(buff,0,length); } stream.close(); out.close(); out.flush(); } catch (IOException e) { e.printStackTrace(); } } }

 

posted @ 2022-08-18 00:05  黄大虾  阅读(14518)  评论(0编辑  收藏  举报