- 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;
- }
- }
来源: http://www.phpxs.com/code/1002283/