文件的下载
来源:互联网 发布:如何成为一个网络写手 编辑:程序博客网 时间:2024/05/22 17:44
超链接下载
<a href="${pageContext.request.contextPath}/File/a.txt">文本文件</a>
如果文件可以直接被浏览器解析,那么会在浏览器中直接打开,不能被浏览器直接解析的,就是下载操作。直接打开的要想下载,右键另存为。
超链接下载,要求下载的资源,必须是可以直接被浏览器直接访问的。(比如我的文件没有放在当前项目下,而是放到了另一个D盘下,浏览器就访问不到我D盘下的文件)
客户端访问服务器静态资源文件时,静态资源文件是通过缺省Servlet返回的,在Tomcat配置文件conf/web.xml中的org.apache.catalina.servlets.DefaultServelt操作的
在服务器端编程完成下载
新建一个jsp,填写代码
<body> <a href='${pageContext.request.contextPath}/download?filename=a.txt'>txt文件</a> <a href='${pageContext.request.contextPath}/download?filename=a.jpg'>jpg文件</a> <a href='${pageContext.request.contextPath}/download?filename=a.mp3'>mp3文件</a></body>
新建一个Servlet,download.java
public class download extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String filename=request.getParameter("filename"); File file=new File("d:/"+filename); if (file.exists()) { FileInputStream fis=new FileInputStream(file);//读取要下载文件的内容 OutputStream os=response.getOutputStream();//将要下载的文件内容通过输出流写回到浏览器 int len=0; byte[] b=new byte[1024*1024]; while((len=fis.read(b))!=-1){ os.write(b,0,len); } os.close(); fis.close(); } } public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request, response); }}
这样做之后,浏览器也可以访问不在项目下的文件了。
但还是,如果文件可以直接被浏览器解析,那么会在浏览器中直接打开,不能被浏览器直接解析的,就是下载操作。直接打开的要想下载,右键另存为。
设置一个响应头,设置后的效果,就是无论返回的是否可以被浏览器解析,都是下载。
response.setHeader("content-disposition", "attachment;filename="+filename);
文件名乱码问题
如果文件名为中文,下载的时候文件名会为空。
添加代码
String agent=request.getHeader("user-agent"); if (agent.contains("MSIE")) { //IE filename=URLEncoder.encode(filename,"utf-8"); }else if (agent.contains("Firefox")) { //火狐 filename="=?utf-8?B?"+new BASE64Encoder().encode(filename.getBytes("utf-8"))+"?="; }else{ //其他浏览器 filename=URLEncoder.encode(filename,"utf-8"); }
0 0
- struts2的文件下载(0):文件下载
- 输出文件的下载
- 下载文件的代码
- Struts的文件下载
- jsp的下载文件
- 文件下载的制作
- 文件的下载
- 客户端文件的下载
- Struts2 的文件下载
- Struts2 的文件下载
- .txt文件的下载
- Struts2文件的下载
- 文件的下载
- thinkphp 的文件下载
- struts2的文件下载
- 文件的多线程下载
- (28)文件的下载
- android 文件的下载
- 8
- C# WinForm开发系列之c# 通过.net自带的chart控件绘制饼图,柱形图和折线图的基础使用和扩展
- 2017年终BAT的JAVA面试题聚集
- CSS伪元素选择器:before和:after
- MySql的基本操作以及以后开发经常使用的常用指令
- 文件的下载
- QT布局管理器
- Java播放声音的几种方式
- Swing边框用法总结(Border)二
- kubernetes 源码分析之kubeadm(二)
- Matlab 文档合并与字母,数字拆分
- 指针引用、常量引用
- MUI踩过的一些坑
- ABAP将内表数据转换为HTML格式的文件