//servlet下载:根据请求url。拦截路径,读取服务器文件流,返回给浏览器,
// 其中请求url可以通过request对象的getRequestURI()获取文件名(用来重命名文件)
public class DownloadServlet extends HttpServlet
{
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException
{
doPost(req, resp);
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException
{
String url = req.getRequestURI();
String resFileName = url.substring(url.lastIndexOf("/")+1,url.length());
String realPath = req.getRealPath("/");
String exeFile = realPath + "download/test.exe";
String kipFile = realPath + "download/exe";
PrintWriter out = resp.getWriter();
if (Tools.checkFileExist(exeFile, kipFile))
{
try
{
File f = new File(exeFile);
BufferedInputStream buffer = new BufferedInputStream(
new FileInputStream(f));
byte[] bt = new byte[1024];
int len = 0;
resp.reset();
resp.setContentType("application/x-msdownload");
resp.setHeader("Content-Disposition", "attachment;filename="
+ resFileName);
OutputStream out1 = resp.getOutputStream();
while ((len = buffer.read(bt)) > 0)
{
out1.write(bt, 0, len);
}
buffer.close();
out1.close();
} catch (Exception e)
{
System.out.println("read downloadfile error:" + e);
}
} else
{
out.println("<center>file is not exsit!</center>");
}
}
}