文件下载的原理或者步骤
1.将文件名作为超链接的参数,但点击下载时,提交到处理的页面或者action,在jsp或者java类里(被action调用)做如下核心步骤:
a.获得这个文件路径参数
b.response.setContentType("application/x-msdownload"); // 弹出那个下载框的形式显示
m_contentDisposition = "attachment;" //指向要下载的文件名,没有下面这一句,将默认为下载本页面
response.setHeader("Content-Disposition",m_contentDisposition + " filename=" + getFileName(s));
response.getOutputStream().write(abyte0,0,j); //输出到页面
如果文件名是中文名,那么直接先转为utf-8的字节,接着将字节转为int ,接着转为16进制,下面程序返回了一个将中文进行编码的字符串
public static String toUtf8String(String s) {
StringBuffer sb = new StringBuffer();
for (int i=0;i<s.length();i++) {
char c = s.charAt(i);
if (c >= 0 && c <= 255) {
sb.append(c);
} else {
byte[] b;
try {
b = Character.toString(c).getBytes("utf-8");
} catch (Exception ex) {
System.out.println(ex);
b = new byte[0];
}
for (int j = 0; j < b.length; j++) {
int k = b[j];
if (k < 0) k += 256;
sb.append("%" + Integer.toHexString(k).
toUpperCase());
}
}
}
return sb.toString();
}
如果使用jspsmartupload,那么很简单,几步就搞定了,不过写在jsp页面好,可以容易就得到了pageContext
,如果文件名是中文,那么调用上面那个函数,转一下中文就搞定了
SmartUpload su = new SmartUpload();
su.initialize(pageContext); // 初始化
su.downloadFile("//download//小聪科软通讯表.xls"); // 下载文件
实例在http://localhost:8088/jspAndServlet/download/download.jsp 这里就不上传了
本文介绍文件下载的基本原理及步骤,包括如何通过设置HTTP响应头来触发浏览器下载操作,并提供了使用Java处理中文文件名的具体实现方法。
920

被折叠的 条评论
为什么被折叠?



