jsp页面就只需要写一个a标签跳转即可
或者写一个js方法
var path = "e:\\323\test.pdf";
window.location.href = encodeURI("bqPrisonerAction!downlaod.action?pathHeqh="+ path);
你也可以window.open(url); 弹出一个页面的方式
下面的代码如果是中文会出现乱码,修改成reponse要修改下编码格式:
吧此行代码response.setContentType(u.openConnection().getContentType());
修改成下面这行即可
response.setContentType("text/html;charset=UTF-8");
2、这句代码中的filename可以自己随便定义一个
response.setHeader("Content-Disposition", "inline; filename=" + f.getName());
自己设置编码之后,
URL u = new URL("file:///" + filepath); 这句代码就可以去掉了
//打开pdf
public void downlaod(){
try{
String filepath = pathHeqh;//这是前台传过来的参数,你可以通过request.getParam。。方法获取,或者在action中定义此参数,然后getset方法添加即可
filepath = new String(filepath.getBytes("iso-8859-1"),"UTF-8");
//filepath = java.net.URLDecoder.decode(filepath, "UTF-8");
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(); // 非常重要
URL u = new URL("file:///" + filepath);
response.setContentType(u.openConnection().getContentType());
response.setHeader("Content-Disposition", "inline; filename=" + f.getName());
// 文件名应该编码成UTF-8
OutputStream out = response.getOutputStream();
while ((len = br.read(buf)) > 0)
out.write(buf, 0, len);
br.close();
out.close();
}catch(Exception e){
e.printStackTrace();
}
}