我的服务器上有一个 PDF 文件,需要用户从客户端下载。
使用 Spring Framework,我使用 javax.servlet.http.HttpServletResponse 创建正确的响应和相应的标头:
response.setHeader("Expires", "-1");
response.setHeader("Cache-Control", "must-revalidate, post-check=0, pre-check=0");
response.setHeader("Pragma", "public");
response.setContentType("application/pdf");
response.setHeader("Content-Disposition", "attachment;filename="content.pdf");
response.setContentLength(content.size());
然后我使用 ServletOutputStream 来编写内容:
ServletOutputStream os;
try {
os = response.getOutputStream();
os.write(((ByteArrayOutputStream)baos).toByteArray());
baos.close();
os.flush();
os.close();
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
在客户端,我收到 HTTP 代码 200 并收到正确的响应正文以及 PDF 文件,但没有出现“另存为...”弹出窗口。
标头配置是否有任何原因可能导致此问题,或者可能在其他地方?
谢谢你。