如何强制浏览器显示pdf而不是下载? 这是控制器
@RequestMapping(value = "/preview.pdf", method = RequestMethod.GET)
protected String preivewSection(
HttpServletRequest request,
HttpSession httpSession,
HttpServletResponse response) {
try {
byte[] documentInBytes = getDocument();
response.setHeader("Content-Disposition", "inline; filename=\"report.pdf\"");
response.setDateHeader("Expires", -1);
response.setContentType("application/pdf");
response.setContentLength(documentInBytes.length);
response.getOutputStream().write(documentInBytes);
} catch (Exception ioe) {
} finally {
}
return null;
}
答案 0 :(得分:3)
如果删除此行,则pdf将在浏览器中打开。
response.setHeader("Content-Disposition", "inline; filename=\"report.pdf\"");
答案 1 :(得分:1)
看起来上面提到的控制器就是我们从服务器端所需要的,问题是浏览器不支持查看PDF文件。
答案 2 :(得分:0)
使用此谷歌浏览器不支持预览。
response.setHeader("Content-Disposition", "attachment; filename=" + file.getName());
但是我将此标头更改为:
response.setHeader("Content-Disposition", "inline; filename=" + file.getName());
预览好!
因为inline (default value, indicating it can be displayed inside the Web page, or as the Web page)
答案 3 :(得分:0)
在检查邮递员的回复后,如果这样的结果在chrome上有效
内容处置:name =“ inline”; filename =“ XXX.pdf”
我认为发问者的参数要少一些“ name =”
Content-Disposition:内联; filename =“ XXX.pdf”(不适用于Chrome)
如果未设置Content-Disposition,则某些框架会自动添加默认值成为
内容处置:name =“ attachment”; filename =“ f.txt”(不适用于chrome)
某些插件会在标题变成之前自动添加“ form-data;”
内容处置:form-data; name =“ inline”; filename =“ XXX.pdf”(不适用于Chrome)