swingfly 发表于 2013-2-7 14:45:18

Servlet在客户端显示word pdf ppt xls html(servlet send pdf,doc,ppt,xls and html to clie

packagecn.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 ;            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 ;            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 ;            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 ;            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 ;            int len;            while ((len = bis.read(b)) != -1)            {                  out.write(b);            }               bis.close();         }      }    } }
页: [1]
查看完整版本: Servlet在客户端显示word pdf ppt xls html(servlet send pdf,doc,ppt,xls and html to clie