<%@ page contentType="text/html; charset=GBK" %>
<%@ page autoFlush="false" %>
<%@ page import="java.sql.*" %>
<%@ page import="java.io.*" %>
<%@ page import="java.util.*" %>
<%@ page import="java.awt.*" %>
<%@ page import="java.awt.image.*" %>
<%@ page import="com.sun.image.codec.jpeg.*" %>
<%@ page import="com.sun.image.codec.jpeg.*" %>
<%!
public static String getcontentType(String pextFileName) //获得扩展名 by gisoracle {
String pext=pextFileName.toLowerCase();
if (pext.equals(".xls"))
{
return "application/vnd.ms-excel";
}
if (pext.equals(".doc"))
{
return "application/msword";
}
if (pext.equals(".txt"))
{
return "text/plain";
}
if (pext.equals(".pdf"))
{
return "application/pdf";
}
if (pext.equals(".jpg")||pext.equals(".jpeg"))
{
return "image/jpeg";
}
if (pext.equals(".ppt"))
{
return "application/vnd.ms-powerpoint";
}
if (pext.equals(".gif"))
{
return "image/gif";
}
return "text/html";
}
%>
<%
String filename =request.getParameter("filename");
File downFile = new File(filename);
String fileext=FileOper.getFiletype(downFile);
System.out.println("fileext="+fileext);
String contentType1 =getcontentType(fileext);
System.out.println("contentType1="+contentType1);
try {
out.clear();
response.setContentType(contentType1);
filename = new String(filename.getBytes("GBK"), "ISO-8859-1");
response.setHeader("Content-Disposition","attachment; filename=" +downFile.getName());
response.addHeader("Cache-Control", "no-cache");
InputStream blobStream = new FileInputStream(downFile);
ServletOutputStream outStream = response.getOutputStream();
byte[] buffer = new byte[10 * 1024];
int nbytes = 0;
while ( (nbytes = blobStream.read(buffer)) != -1) {
outStream.write(buffer, 0, nbytes);
}
outStream.flush();
outStream.close();
blobStream.close();
}
catch (Exception e) {
System.out.println(e);
}
%>
-------------------------------------------------
分装为方法调用:
public void downFile() throws FileNotFoundException {
HttpServletRequest request = ServletActionContext.getRequest();
HttpServletResponse response = ServletActionContext.getResponse();
// String filename =request.getParameter("filename");
HttpSession session = (HttpSession) request.getSession();
ServletContext application = (ServletContext) session
.getServletContext();
String fileUrl = application.getRealPath("")
+ "/wtVideo/video/file/WebComponents.exe";// 获取所需要下载文件的url
String filename = fileUrl;
File downFile = new File(filename);
// String fileext=File.getFiletype(downFile);
// System.out.println("fileext="+fileext);
String contentType1 = this.getcontentType(filename);
System.out.println("contentType1=" + contentType1);
try {
response.setContentType(contentType1);
filename = new String(filename.getBytes("GBK"), "ISO-8859-1");
response.setHeader("Content-Disposition", "attachment; filename="
+ downFile.getName());
response.addHeader("Cache-Control", "no-cache");
InputStream blobStream = new FileInputStream(downFile);
ServletOutputStream outStream = response.getOutputStream();
byte[] buffer = new byte[10 * 1024];
int nbytes = 0;
while ((nbytes = blobStream.read(buffer)) != -1) {
outStream.write(buffer, 0, nbytes);
}
outStream.flush();
outStream.close();
blobStream.close();
} catch (Exception e) {
System.out.println(e);
}
}