jsp实现文件的下载功能
我用下面的代码来实现文件的下载,当下载中文名的文件时,下载文件内容是对的,可是文件名为"CAVB6F65..htm",而原来的名字是"新建.txt",怎么保存为原来的名字呢,而且下载后点击打开它都用IE打开,而如果文件名不为中文名时,下载的默认文件名就是原来的,而且打开也是默认,就是说如果原来的是txt文件它就用notepad打开,如果是htm就是IE打开,为什么呢,怎么改呢,先谢谢了.用这个连接下载<a href="download.jsp?file=1.txt&downloadFlag=1">下载</a>代码如下:
download.jsp
<%@page contentType="text/html; charset=EUC-JP" language="java" %>
<%@page import="java.util.*"%>
<%@page import="java.io.*"%>
<%@page import="java.net.*"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<% String fileName="";
if (request.getParameter("file") != null) {
fileName = request.getParameter("file");
fileName=new String(fileName.getBytes("iso8859-1"),"gb2312");
}
if("1".equals(request.getParameter("downloadFlag"))){//downloadFlag为1时为下载文件
response.setHeader("Content-disposition","attachment; filename="+new String(fileName.getBytes("iso8859-1"),"gb2312"));
}else if("0".equals(request.getParameter("downloadFlag"))){//downloadFlag为0时为用指定的程序打开文件
response.setContentType("application/ms-word");
}//downloadFlag为其他值时用IE默认的方式打开文件
BufferedInputStream bis = null;
BufferedOutputStream bos = null;
try {
bis = new BufferedInputStream(new FileInputStream(getServletContext().getRealPath("" + fileName)));
bos = new 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(final IOException e) {
System.out.println ( "IOException." + e );
} finally {
if (bis != null)
bis.close();
if (bos != null)
bos.close();
}
%>
问题点数:10、回复次数:3Top
1 楼iwlk(http://www.ChinaFedora.cn/ fedora论坛)回复于 2006-12-02 10:36:40 得分 5
把
response.setHeader("Content-disposition","attachment; filename="+new String(fileName.getBytes("iso8859-1"),"gb2312"));
改为
response.setHeader("Content-disposition","attachment; filename="+java.net.URLEncoder.encode("新建.txt","UTF-8"));
Top
2 楼ai5173609()回复于 2006-12-03 22:54:24 得分 0
像你说的一样的话,好像不能解决问题啊,再说它也缺乏通用性,每设一个下载文件就要专门为它配一个这种文件,岂不麻烦,还有没有好的办法啊,兄弟在此先谢谢了Top
3 楼huantianxidi(欢天喜地)回复于 2006-12-04 10:38:10 得分 5
smartupload.jar 你使用这个就行了.别自己写了.怪费劲的.Top




