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

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();

           }

 

       }

    }

 

}
 
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值