import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import javax.servlet.http.HttpServletResponse;
import org.apache.log4j.Logger;
public class DownLoadUtil {
private static Logger logger = Logger.getLogger(DownLoadUtil.class);
/**
* 下载文件
* @param name 用户下载的文件名(*****.***)
* @param filePath 文件路径
* @param response
* @param fileType 文件类型
* @return
* @throws Exception
*/
public static boolean downLoadFile(String name,String filePath,
HttpServletResponse response, String fileType)
throws Exception {
logger.info("start invoke downLoadFile,[filePath:"+filePath+" , fileType:"+fileType+"]");
File file = new File(filePath);
//设置文件类型
if("pdf".equals(fileType)){
response.setContentType("application/pdf");
}else if("xls".equals(fileType)){
response.setContentType("application/msexcel");
}else if("doc".equals(fileType)){
response.setContentType("application/msword");
}
response.setHeader("Content-Disposition", "attachment;filename=\""
+ new String(name.getBytes("GB2312"), "ISO8859-1") + "\"");
//response.setHeader("Content-Disposition", "attachment;filename=\""+ URLEncoder.encode(name, "UTF-8")+ "\"");
response.setContentLength((int) file.length());
byte[] buffer = new byte[4096];// 缓冲区
BufferedOutputStream output = null;
BufferedInputStream input = null;
try {
output = new BufferedOutputStream(response.getOutputStream());
input = new BufferedInputStream(new FileInputStream(file));
int n = -1;
while ((n = input.read(buffer, 0, 4096)) > -1) {
output.write(buffer, 0, n);
}
output.flush();
response.flushBuffer();
} catch (Exception e) {
logger.error("exception when invoke downLoadFile",e);
throw e;
} finally {
if (input != null)
input.close();
if (output != null)
output.close();
}
logger.info("end invoke downLoadFile!");
return true;
}
}