package com.my.util;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class ShowFile
extends HttpServlet
{
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException
{
try
{
String fileName = request.getParameter("filename");
String filePath = request.getParameter("filepath");
String contentType = request.getParameter("contentType");
response.setContentType(contentType); // 设置返回的文件类型 "image/jpeg;charset=GB2312"
response.setHeader("Content-disposition", "attachment;filename=" + fileName);
String path = filePath + "\\\\" + fileName;
System.out.println("文件路径: " + path);
File file = new File(path);
FileInputStream hFile = new FileInputStream(file);
int i = hFile.available(); // 得到文件大小
byte data[] = new byte[i];
hFile.read(data); // 读数据
hFile.close();
OutputStream toClient = response.getOutputStream(); // 得到向客户端输出二进制数据的对象
toClient.write(data); // 输出数据
toClient.close();
}
catch (IOException e)
{
PrintWriter toClient = response.getWriter(); // 得到向客户端输出文本的对象
response.setContentType("text/html;charset=gb2312 ");
toClient.write("无法打开图片! ");
toClient.close();
}
}
}
web.xml配置:
<servlet>
<servlet-name>downloadservlet-name>
<servlet-class>com.my.util.ShowFile<servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>download<servlet-name>
<url-pattern>/downurl<url-pattern>
<servlet-mapping>
调用该SERVLET:
window.location.href = '../downurl?filepath='+ filepath +'&filename='+fileName+'&contentType='+'application/x-msdownload;charset=GB2312';
filepath:为所要下载文件的主目录; fileName:下载文件名;
说明:用户可以根据自己的需要,下载不同路径下的文件
http ://blog.csdn.net/jimesum1/archive/2008/03/21/2203315.aspx