java的Servlet 下载PDF的时候,下载下来的PDF有问题。空白。。。

各位
拜托各位。我写的一个下载用的Servlet,下载的PDF都是是空白。
是怎么回事啊。。。拜托 :cry: :cry:
心急啊

一、如何使用

如果此Servlet命名为download,请求的URL为:/download?path=xxx

二、下载核心代码
[code="java"]import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class FileDownload extends HttpServlet {

protected void service(HttpServletRequest req, HttpServletResponse res)
throws ServletException, IOException {

// 服务器相对路径
String path = req.getParameter("path");
// 服务器绝对路径
path = getServletContext().getRealPath("/") + path;

// 检查文件是否存在
File obj = new File(path);
if (!obj.exists()) {
  res.setContentType("text/html;charset=GBK");
  res.getWriter().print("指定文件不存在!");
  return;
}

// 读取文件名:用于设置客户端保存时指定默认文件名
int index = path.lastIndexOf("\\"); // 前提:传入的path字符串以“\”表示目录分隔符
String fileName = path.substring(index + 1);

// 写流文件到前端浏览器
ServletOutputStream out = res.getOutputStream();

response.setContentType("application/OCTET-STREAM;charset=GBK");
res.setHeader("Content-disposition", "attachment;filename=" + fileName);
BufferedInputStream bis = null;
BufferedOutputStream bos = null;
try {
bis = new BufferedInputStream(new FileInputStream(path));
bos = new BufferedOutputStream(out);
byte[] buff = new byte[2048];
int bytesRead;
while (-1 != (bytesRead = bis.read(buff, 0, buff.length))) {
bos.write(buff, 0, bytesRead);
}
} catch (IOException e) {
throw e;
} finally {
if (bis != null)
bis.close();
if (bos != null)
bos.close();
}
}

}[/code]

三、web.xml配置


FileDownload
com.fastunit.test.FileDownload


FileDownload
/download

调试一下

是否已经把生成的pdf通过流写到客户端

这个空白的问题 应该挺好找的

先看看后台有没有报什么错误,

response.setContentType("application/pdf"); MIME不对