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]
下载方法。不限制你的任何文件