最近研究了文件现在代码如下:
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
String templateName = req.getParameter("templateName");//need download file name
//server file address.
StringBuffer urlBuffer = new StringBuffer();
String realPath = req.getSession().getServletContext().getRealPath("/");
urlBuffer.append(realPath);
urlBuffer.append("templates/");
urlBuffer.append(templateName);
String url =urlBuffer.toString();
File f = new File(url);
String filename = f.getName();
int length = 0;
ServletOutputStream op = resp.getOutputStream();
resp.setContentLength((int) f.length());
if (templateName.endsWith("xls")) {
resp.setContentType("application/vnd.ms-excel");
}else if (templateName.endsWith("xlsx")) {
resp.setContentType("application/vnd.ms-excel");
}else if (templateName.endsWith("pdf")) {
resp.setContentType("application/pdf");
}else if (templateName.endsWith("doc")) {
resp.setContentType("application/msword");
}else if (templateName.endsWith("docx")) {
resp.setContentType("application/msword");
}
resp.setHeader("Content-Disposition", "attachment; filename*=\"utf-8''" + filename + "");
resp.setHeader("Pragma", "No-cache");
resp.setHeader("Cache-Control", "no-store");
resp.setDateHeader("Expires", 0);
byte[] bytes = new byte[1024];
DataInputStream in = new DataInputStream(new FileInputStream(f));
while ((in != null) && ((length = in.read(bytes)) != -1)) {
op.write(bytes, 0, length);
}
op.close();
resp.flushBuffer();
}