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