下载pdf文档报错,内容转码失败

java实现下载pdf文档报错,内容转码
[img]http://dl.iteye.com/upload/attachment/0070/2467/68a49d1b-ed0a-38ea-bb8d-e0521250a51b.jpg[/img]
失败。
代码如下:
public void downLoad(String filePath, HttpServletResponse response) throws Exception {
File f = new File(filePath);
if (!f.exists()) {
response.sendError(404, "File not found!");
return;
}
BufferedInputStream br = new BufferedInputStream(new FileInputStream(f));
byte[] buf = new byte[1024];
int len = 0;

    response.reset(); // 非常重要
     // 纯下载方式
    String fileName = f.getName();
    fileName = java.net.URLEncoder.encode(fileName, "UTF-8");

    response.setCharacterEncoding("UTF-8");
    response.setContentType("application/pdf");
    response.setHeader("Content-Disposition", "attachment; filename=" + fileName);

    OutputStream out = response.getOutputStream();
    while ((len = br.read(buf)) > 0)
    out.write(buf, 0, len);
    br.close();
    out.close();
    }

[code="java"] public void downloadLocal(HttpServletRequest request,HttpServletResponse response, String fileName,
String pathAndFileName) throws FileNotFoundException {
InputStream inStream = new FileInputStream(pathAndFileName);
response.reset();
ServletUtil.setFileDownloadHeader(request, response, fileName);

    byte[] b = new byte[100];
    int len;
    try {
        while ((len = inStream.read(b)) > 0)
            response.getOutputStream().write(b, 0, len);
    } catch (IOException e) {

    }finally{
        try {
            inStream.close();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
}

        public static void setFileDownloadHeader(HttpServletRequest request,HttpServletResponse response, String fileName) {
        String encodedfileName;
        try {
            //中文文件名支持
            if (request.getHeader("User-Agent").toUpperCase().indexOf("MSIE") > 0){
                encodedfileName = URLEncoder.encode(fileName, "UTF-8");
            }else if(request.getHeader("User-Agent").toLowerCase().indexOf("firefox") > 0||request.getHeader("User-Agent").toLowerCase().indexOf("opera") > 0){
                encodedfileName = new String(fileName.getBytes(), "ISO8859-1");
            }else{
                encodedfileName = URLEncoder.encode(fileName, "UTF-8");
            }

            response.setHeader("Content-Disposition", "attachment; filename=\"" + encodedfileName + "\"");
        } catch (UnsupportedEncodingException e) {
        }
    }[/code]

下载方法。不限制你的任何文件