0 0

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

java实现下载pdf文档报错,内容转码

失败。
代码如下:
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();
}
2012年7月03日 09:31
  • 大小: 15.1 KB

1个答案 按时间排序 按投票排序

0 0

采纳的答案

	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) {
			}
		}


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

2012年7月03日 09:55

相关推荐

Global site tag (gtag.js) - Google Analytics