|
|
以前不太重视Servlet,觉得servlet能够实现的功能,jsp都能实现,这一阶段猛学servlet,很有感触,正好一网友法帖求助,怎样用servlet实现下载。我就贴一篇吧,以供大家参考(主要的Servlet,关联文件没有贴出): /* * DownLoad.java */
package com.zy.oa.util;
import java.io.*; import java.text.*; import java.util.*; import javax.servlet.*; import javax.servlet.http.*; import java.net.*;
/** * 实现下载功能 */ public class DownLoad { public void downLoad(HttpServletResponse response, String headName, String fileUrl) throws Exception{ Logger.log("begin download " + headName); if (headName.endsWith(".jpg") || (headName.endsWith(".gif"))) { //no need setting content type and header } else if (headName.endsWith(".txt")) { response.setContentType( "text;charset=GB2312"); response.setHeader("Content-disposition", "attachment; filename=" + headName ); } else { response.setContentType( "application/doc;charset=GB2312"); response.setHeader("Content-disposition", "attachment; filename=" + headName ); }
String fileURL = fileUrl; Logger.log(fileURL); if(fileURL == null) return; try{ File file = new File(fileUrl); FileInputStream bis = new FileInputStream(file); OutputStream bos = response.getOutputStream();
byte[] buff = new byte[1024]; int readCount = 0; int i = 0; readCount = bis.read(buff); while (readCount != -1){ bos.write(buff, 0, readCount); readCount = bis.read(buff); } Logger.log("read finished!"); if (bis!=null) bis.close(); if (bos!=null) bos.close();
}catch(Exception e){ e.printStackTrace(); throw e; } } }
|
|