HttpServletResponse下载文件
简称Response类
常见应用
- 向浏览器输出消息
- 下载文件
- 要获取下载文件的路径
- 下载文件的名称
- 设置想办法让浏览器能够支持下载我们需要的东西
- 获取下载文件的输入流
- 创建缓冲区
- 获取OutputStream对象
- 将FileOutputStream流写入到debuffer缓冲区
- 使用OutputStream将缓冲区的数据输出到客户端!
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 | package com.yin; import javax.servlet.ServletException; import javax.servlet.ServletOutputStream; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.FileInputStream; import java.io.IOException; import java.net.URLEncoder; public class servlet1 extends HttpServlet { @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { //要获取下载文件的路径 //String realPath=this.getServletContext().getRealPath("/1.png"); String realPath= "E:\\code\\maven0\\response1\\src\\main\\resources\\1.png" ; System.out.println( "下载文件的路径:" +realPath); //下载文件的名称 String filename=realPath.substring(realPath.lastIndexOf( "\\" )+ 1 ); //设置想办法让浏览器能够支持下载我们需要的东西 //resp.setHeader("Content-Disposition", "attachment; filename="+ URLEncoder.encode(filename,"utf-8"));//可解决中文名乱码 resp.setHeader( "Content-Disposition" , "attachment; filename=" +filename); //获取下载文件的输入流 FileInputStream in= new FileInputStream(realPath); //创建缓冲区 int len= 0 ; byte [] buffer= new byte [ 1024 ]; //获取OutputStream对象 ServletOutputStream out =resp.getOutputStream(); //将FileOutputStream流写入到buffer缓冲区//使用OutputStream将缓冲区的数据输出到客户端! while ( (len=in.read(buffer))> 0 ) out.write(buffer, 0 ,len); in.close(); out.close(); } @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { super .doGet(req, resp); } } |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 上周热点回顾(3.3-3.9)
· AI 智能体引爆开源社区「GitHub 热点速览」