jsp实现文件下载与中文文件名乱码问题解决
问题如下:
之前,写过一个Download.jsp文件,可以解决下载文件乱码问题(诸如:DOC,XSL文件等等).
后来发现,遇到中文名的文件的时候,文件下载将会报错~~~~
今天,通过改写原Download.jsp文件已经彻底解决了这个问题~
现在,把一整套的文件上传下载的方法给贴出来~~~以便大家借鉴!~!~!~!~!
作者:古埃及法老
download.jsp文件
---------------------------------------------------------
<%
java.io.BufferedInputStream bis=null;
java.io.BufferedOutputStream bos=null;
try{
String filename=request.getParameter("filename");
filename=new String(filename.getBytes("iso8859-1"),"gb2312");
response.setContentType("application/x-msdownload");
response.setHeader("Content-disposition","attachment; filename="+new String(filename.getBytes("gb2312"),"iso8859-1"));
bis =new java.io.BufferedInputStream(new java.io.FileInputStream(config.getServletContext().getRealPath("files/" + filename)));
bos=new java.io.BufferedOutputStream(response.getOutputStream());
byte[] buff = new byte[2048];
int bytesRead;
while(-1 != (bytesRead = bis.read(buff, 0, buff.length))) {
bos.write(buff,0,bytesRead);
}
}
catch(Exception e){
e.printStackTrace();
}
finally {
if (bis != null)bis.close();
if (bos != null)bos.close();
}
%>
注意,关键就是setHeader里的filename需要重新编码,格式是ISO-8859-1就OK了
以下是我自己项目中用到的代码片断,供参考:
list.jsp: 显示附件名称的页面
<tr>
<td height="25" class="tdcor">附 件 </td>
<td colspan="3"&
相关文档:
第一步:JDK与Tomcat等的下载与配置
最新的JDK为6.0(jdk-6u12-windows-i586-p.exe),tomcat为6.0(apache-tomcat-6.0.18.exe)
开发环境:
JDK: jdk-6u12-windows-i586-p.exe
下载地址:http://java.sun.com/javase/downloads/index.jsp
Tomcat:apache-tomcat-6.0.18.exe
下载地址:http://tomcat.a ......
说明:基于Eclipse 3.2 + Tomcat 4.0编译完成
1.完成你自己的Tag Class,javax.servlet.jsp中提供一个Tag接口类
TagSupport 和 BodyTagSupport两个类,你自己的Tag Class必须
extends其中一个。本例中HrefTag Class extends TagSupport类,并
完成了doStratTag方法的重写,主要代码如下:
public int doStartTag(){
J ......
JSP彩色验证码
生成有4个随机数字和杂乱背景的图片,数字和背景颜色会改变,服务器端刷新(用history.go(-1)也会变)
原型参考ALIBABA http://china.alibaba.com/member/showimage
产生验证码图片的文件-----image.jsp
<%@ page contentType="image/jpeg" import="java.awt.*,java.awt.image.*,java.util.*,java ......