1、写一个servlet类如下:
package com.sidiw.util.file;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.sidiw.fw.config.SysConfig;
import com.sidiw.util.common.StringUtil;
public class FileDownloadSrv extends HttpServlet {
private static final long serialVersionUID = 929343201803877803L;
private static final String CONTENT_TYPE = "text/html; charset=utf-8";
private String strFileName;
public void setStrFileName(String strFileName) {
this.strFileName = strFileName;
}
protected void doGet(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
doPost(request, response);
}
public void init() throws ServletException {
super.init();
}
protected void doPost(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
response.setContentType(CONTENT_TYPE);
try {
String strPath = SysConfig.sidiwRealPath;
strFileName = request.getParameter("strFileName");
File file = new File(strPath + this.strFileName);
response.setHeader("Pragma", "No-cache");
response.setHeader("Cache-Control", "no-cache");
response.setDateHeader("Expires", 0);
response.setHeader("Content-disposition", "attachment;filename="
+ StringUtil.encodeURL(this.strFileName, "utf-8"));
FileInputStream fileinputstream = new FileInputStream(file);
Long aa = new Long(file.length());
int l = aa.intValue();
int k = 0;
int i = 65000;
byte abyte0[] = new byte[i];
while (k < l) {
int j = fileinputstream.read(abyte0, 0, i);
k += j;
response.getOutputStream().write(abyte0, 0, j);
}
response.getOutputStream().flush();
fileinputstream.close();
} catch (Exception e) {
System.out.println("download file Error!" + e.toString());
}
}
}
2、Tomcat5下的配置文件,如果在4.0之前可以不配置
<servlet>
<servlet-name>fileDownloadSrv</servlet-name>
<servlet-class>com.sidiw.util.file.FileDownloadSrv</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>fileDownloadSrv</servlet-name>
<url-pattern>/servlet/fileDownload</url-pattern>
</servlet-mapping>
3、使用如下:
<a href='../../servlet/fileDownload?strFileName="excelFileName">下载附件</a>
"excelFileName"<BR>
<servlet>
<servlet-name>fileDownloadSrv</servlet-name>
<servlet-class>com.sidiw.util.file.FileDownloadSrv</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>fileDownloadSrv</servlet-name>
<url-pattern>/servlet/fileDownload</url-pattern>
</servlet-mapping>
3、使用如下:
<a href='../../servlet/fileDownload?strFileName="excelFileName">下载附件</a>
"excelFileName"<BR>