文件下载

    科技2024-07-10  77

    import javax.servlet.ServletException; import javax.servlet.ServletOutputStream; import javax.servlet.annotation.WebServlet; 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; @WebServlet("/FileServlet") public class FileServlet extends HttpServlet { protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { } protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // 1、获取下载文件的路径 String realPath="H:\\Maven\\ServletTest\\Download\\src\\main\\resources\\天空.png"; System.out.println(realPath); // 2、下载的文件名是啥 String fileName = realPath.substring(realPath.lastIndexOf("\\") + 1); // 3、设置浏览器能够支持下载的东西,中文文件名需要指定编码方式,否则可能会乱码 response.setHeader("Content-Disposition","attachment;filename="+ URLEncoder.encode(fileName,"utf-8"));//分号改成冒号会展示图片而不会下载 // 4、获取下载文件的输入流 FileInputStream in=new FileInputStream(realPath); // 5、创建缓冲区 int len=0; byte[] buffer=new byte[1024]; // 6、获取outputStream对象 ServletOutputStream out= response.getOutputStream(); // 7、将FileOutputStream流写入buffer,使用outputStream将缓冲区数据输出到客户端 while((len=in.read(buffer))>0) { out.write(buffer,0,len); } in.close(); out.close(); } }

     

    Processed: 0.014, SQL: 8