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(); } } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?