javaweb:Response的应用(二)——文件下载
2022/7/25 1:53:00
本文主要是介绍javaweb:Response的应用(二)——文件下载,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
为什么直接就是Response的应用二呢?因为Response的应用一就是向浏览器输出消息,即
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { PrintWriter writer = resp.getWriter(); writer.println("Hello Servlet"); }
诸如此类。
那么我们长话短说,直接进入正题。
利用Response实现文件的下载大致有七个步骤,分别为:
1.获取文件的路径,获取文件的路径方法有很多种,下面只列举出了一种;
2.获取文件的名称;
3.设置浏览器的相关信息,最重要的就是要让浏览器支持下载;
4.获取文件的输入流;
5.创建缓冲区;
6.获取ServletOutputStream输出流;
7.利用输入流将文件写入缓冲区,再利用输出流发送给客户端。
话不多说直接上源码
1 package com.jms.servlet; 2 3 import java.io.FileInputStream; 4 import java.io.IOException; 5 import java.net.URLEncoder; 6 7 import javax.servlet.ServletException; 8 import javax.servlet.ServletOutputStream; 9 import javax.servlet.http.HttpServlet; 10 import javax.servlet.http.HttpServletRequest; 11 import javax.servlet.http.HttpServletResponse; 12 13 public class filedown extends HttpServlet{ 14 15 @Override 16 protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { 17 //1.获取文件路径 18 String filepath = this.getServletContext().getRealPath("/WEB-INF/classes/jms.png"); 19 //2.获取文件的名称 20 //原理就是截取最后一个"/"后面的部分,“\\”是进行了转义 21 String filename = filepath.substring(filepath.lastIndexOf("\\") + 1); 22 filename = URLEncoder.encode(filename, "UTF-8");//对文件名进行编码,否则中文名可能出现乱码问题 23 System.out.print(filename); 24 //3.设置浏览器支持下载 25 resp.setHeader("Content-Disposition","attachment;filename="+filename); 26 //4.获取文件的输入流 27 FileInputStream fis =new FileInputStream(filepath); 28 //5.创建缓冲区 29 int len = 0; 30 byte buffer[] = new byte[1024]; 31 //6.获取ServletOutputStream 32 ServletOutputStream sos = resp.getOutputStream(); 33 //7.将输入流写入到缓冲区,再利用ServletOutputStream将数据发送给客户端 34 while((len=fis.read(buffer))!=-1){ 35 sos.write(buffer, 0, len); 36 } 37 //不要忘记关闭流 38 fis.close(); 39 sos.close(); 40 } 41 42 @Override 43 protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { 44 // TODO Auto-generated method stub 45 doGet(req, resp); 46 } 47 48 49 }
修改web.xml文件
<servlet> <servlet-name>down</servlet-name> <servlet-class>com.jms.servlet.filedown</servlet-class> </servlet> <servlet-mapping> <servlet-name>down</servlet-name> <url-pattern>/down</url-pattern> </servlet-mapping>
测试
没有问题,文件成功下载。
(本文仅作个人学习记录用,如有纰漏,敬请指正)
这篇关于javaweb:Response的应用(二)——文件下载的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-05-15鸿蒙生态设备数量超8亿台
- 2024-05-13TiDB + ES:转转业财系统亿级数据存储优化实践
- 2024-05-09“2024鸿蒙零基础快速实战-仿抖音App开发(ArkTS版)”实战课程已上线
- 2024-05-09聊聊如何通过arthas-tunnel-server来远程管理所有需要arthas监控的应用
- 2024-05-09log4j2这么配就对了
- 2024-05-09nginx修改Content-Type
- 2024-05-09Redis多数据源,看这篇就够了
- 2024-05-09Google Chrome驱动程序 124.0.6367.62(正式版本)去哪下载?
- 2024-05-09有没有大佬知道这种数据应该怎么抓取呀?
- 2024-05-09这种运行结果里的10.100000001,怎么能最快改成10.1?