|
|
|
package cn.terje.web; import java.io.BufferedInputStream;import java.io.File;import java.io.FileInputStream;import java.io.IOException;import java.util.regex.Pattern; import javax.servlet.ServletException;import javax.servlet.ServletOutputStream;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse; /* * 针对不同的格式发送不同的文件格式到 client * * */public class DocShowServlet extends HttpServlet{ @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { String fN = req.getParameter( "fileName" ); if (fN == null ) { resp.sendError(404); // 出错了 } else { String fileName = "F:\\DOC\\" + fN; // 资料存放在 E DOC 下,主要是在 WIN 平台下 // 先判断文件类型,根据不同的文件类型选择不同的发送方式 if (Pattern.matches ( ".+\\.(html)" , fN)) { resp.setContentType( "text/html" ); resp.setCharacterEncoding( "gb2312" ); ServletOutputStream out = resp.getOutputStream(); BufferedInputStream bis = new BufferedInputStream( new FileInputStream( new File(fileName))); // 读取文件 byte [] b = new byte [1024]; int len; while ((len = bis.read(b)) != -1) { out.write(b); } bis.close(); } // 将 PDF 发送到 client if (Pattern.matches ( ".+\\.(pdf)" , fN)) { resp.setContentType( "application/pdf" ); resp.setCharacterEncoding( "gb2312" ); ServletOutputStream out = resp.getOutputStream(); BufferedInputStream bis = new BufferedInputStream( new FileInputStream( new File(fileName))); byte [] b = new byte [1024]; int len; while ((len = bis.read(b)) != -1) { out.write(b); } bis.close(); } // 发送 word 文档 if (Pattern.matches ( ".+\\.(doc)" , fN)) { resp.setContentType( "application/msword" ); resp.setCharacterEncoding( "gb2312" ); ServletOutputStream out = resp.getOutputStream(); BufferedInputStream bis = new BufferedInputStream( new FileInputStream( new File(fileName))); byte [] b = new byte [1024]; int len; while ((len = bis.read(b)) != -1) { out.write(b); } bis.close(); } // 电子表格发送到 client if (Pattern.matches ( ".+\\.(xls)" , fN)) { resp.setContentType( "application/vnd.ms-excel" ); resp.setCharacterEncoding( "gb2312" ); ServletOutputStream out = resp.getOutputStream(); BufferedInputStream bis = new BufferedInputStream( new FileInputStream( new File(fileName))); byte [] b = new byte [1024]; int len; while ((len = bis.read(b)) != -1) { out.write(b); } bis.close(); } //PPT 发送到 client if (Pattern.matches ( ".+\\.(ppt)" , fN)) { resp.setContentType( ">application/vnd.ms-powerpoint" ); resp.setCharacterEncoding( "gb2312" ); ServletOutputStream out = resp.getOutputStream(); BufferedInputStream bis = new BufferedInputStream( new FileInputStream( new File(fileName))); byte [] b = new byte [1024]; int len; while ((len = bis.read(b)) != -1) { out.write(b); } bis.close(); } } } } |
|