Java 下载文件回顾(servlet+jsp)
2013-03-27 20:29
204 查看
一段时间没有接触Java Web程序的文件下载了,今天项目中用到了,竟然非常手生。写一篇日志,记录一下
Servlet处理类:
Web页面:
关于jsp顶部pageEncoding和charset的说明:
pageEncoding是设置的JSP页面源代码的字符编码格式
charset是请求服务器以后返回过来的内容的字符编码
以上代码在jdk1.5、tomcat6.0、window xp系统下运行正常
参考:http://blog.csdn.net/lpz283929516/article/details/6414705
Servlet处理类:
package com.geor; import javax.servlet.*; import javax.servlet.http.*; import java.io.*; public class FileDownServlet extends HttpServlet { private static final String CONTENT_TYPE = "text/html; charset=GBK"; public void init() throws ServletException { } public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { /* * response.setContentType(MIME)的作用是使客户端浏览器,区分不同种类的数据,并根据不同的MIME调用浏览器内不同的程序嵌入模块来处理相应的数据 * 默认为text/html,是HTML文档的类型 */ response.setContentType(CONTENT_TYPE); // 得到下载文件的名字 // String filename=request.getParameter("filename"); // 加上对中文乱码问题的处理 // J***A在网络传输中使用的编码是"ISO-8859-1",故在输出时需要进行转化 String filename = new String(request.getParameter("filename").getBytes( "iso-8859-1"), "utf-8"); // 创建file对象,注意:temp的后面,需要加上"\\" File file = new File("D:\\temp\\" + filename); // 设置response的编码方式 response.setContentType("application/x-msdownload"); // 写明要下载的文件的大小 response.setContentLength((int) file.length()); // 设置附加文件名 // response.setHeader("Content-Disposition","attachment;filename="+filename); // 解决中文乱码,向客户端发送返回页面的头信息 // 1.Content-disposition是MIME协议的扩展 // 2.attachment --- 作为附件下载 // 3.在客户端将会弹出下载框 // 4.这个是文件下载的关键代码 response.setHeader("Content-Disposition", "attachment;filename=" + new String(filename.getBytes("utf-8"), "iso-8859-1")); // 读出文件到i/o流 FileInputStream fis = new FileInputStream(file); BufferedInputStream buff = new BufferedInputStream(fis); byte[] b = new byte[1024];// 相当于我们的缓存 int k = 0;// 该值用于计算当前实际下载了多少字节 // 从response对象中得到输出流,准备下载 OutputStream myout = response.getOutputStream(); // 开始循环下载 while (-1 != (k = fis.read(b, 0, b.length))) { // 将b中的数据写到客户端的内存 myout.write(b, 0, k); } // 将写入到客户端的内存的数据,刷新到磁盘 myout.flush(); } // Process the HTTP Post request public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request, response); } // Clean up resources public void destroy() { } }
Web页面:
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%> <%@ page contentType="text/html;charset=utf-8"%> <% String path = request.getContextPath(); String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort() + path + "/"; %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <base href="<%=basePath%>"> <title>Java Web下载程序</title> <meta http-equiv="pragma" content="no-cache"> <meta http-equiv="cache-control" content="no-cache"> <meta http-equiv="expires" content="0"> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> <meta http-equiv="description" content="This is my page"> <!-- <link rel="stylesheet" type="text/css" href="styles.css"> --> </head> <body> <a href=FileDownServlet?filename=2012年度第四季季刊.pdf>2012年度第四季季刊.pdf</a> </body> </html>web.xml配置servlet:
<?xml version="1.0" encoding="UTF-8"?> <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"> <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list> <servlet> <description>文件下载</description> <display-name>This is the display name of my J2EE component</display-name> <servlet-name>FileDownServlet</servlet-name> <servlet-class>com.geor.FileDownServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>FileDownServlet</servlet-name> <url-pattern>/FileDownServlet</url-pattern> </servlet-mapping> </web-app>
关于jsp顶部pageEncoding和charset的说明:
pageEncoding是设置的JSP页面源代码的字符编码格式
charset是请求服务器以后返回过来的内容的字符编码
以上代码在jdk1.5、tomcat6.0、window xp系统下运行正常
参考:http://blog.csdn.net/lpz283929516/article/details/6414705
相关文章推荐
- 自己写的一个JSP上传文件和下载文件的JavaBean
- jsp页面 java 文件下载设置禁止IE直接打开配置问题
- 自己写的一个JSP上传文件和下载文件的JavaBean 自己写的一个JSP上传文件和下载文件的JavaBean
- 自己写的一个JSP上传文件和下载文件的JavaBean
- jsp页面java+js实现文件下载(并附带解决下载文件名乱码问题-火狐浏览器正常访问)
- jsp里使用java excel api实现文件下载
- JSP下载打包文件及java.lang.IllegalStateException异常解决
- jsp页面点击下载文件 java方式(服务器上带路径文件 以文件流输出)
- Javabean+JSP 实现文件的上传 显示 下载
- Java Web 回顾总结(五) - HttpServlet - Response - 5.3.2 浏览器下载文件
- java+jsp代码实现从FTP服务器上传下载文件
- java JSP文件下载
- Java创建文件夹和JSP下载文件
- SERVLET与JSP_文件上传下载(4)-java
- Servlet.service() for servlet jsp threw exception java.lang.Il在jsp中使用jspsmartupload组件下载文件时将抛出异常的解决方案
- JAVA中的FtpClient与FTPClient,并实现jsp页面下载ftp服务器上的文件
- Java+jsp+Servlet实现文件上传和下载
- jsp下载 java BufferedInputStream 读取excel文件 这样就不出...
- Java / JSP 文件上传与下载
- 自己写的一个JSP上传文件和下载文件的JavaBean