0

所以我有一个 servlet,其 URL 类似于 blah.do?params=xyz

在servlet中我的代码类似于

ServletOutputStream out = response.getOutputStream();
request.setAttribute("Content-Type","application/pdf");
request.setAttribute("Content-Disposition","attachment;filename=test.pdf");
byte[] bytes = SystemServer.getFileContents(fileId).getBytes();      
request.setAttribute("Content-Length","" + bytes.length);
out.write(bytes, 0, bytes.length);
out.flush();

我用

window.open(url,"my file","someparams");

但是chrome正在以纯文本形式打开窗口,并且查看源代码确认输出的所有内容都是

%PDF-1.4 %áéëÓ 2 0 obj  ..... all contents....%%EOF

那么我怎样才能强迫它以pdf格式出现

奇怪的是我使用相同的代码将图像返回到浏览器并且它工作正常

4

2 回答 2

1

您需要在响应对象而不是请求上设置这些属性。

于 2012-06-14T18:26:00.767 回答
0

您正在将几件事设置为请求属性,这些属性实际上应该在响应中设置。

response.setContentType("application/pdf");
response.setContentLength(bytes.length);
response.addHeader("Content-Disposition","attachment;filename=test.pdf");
于 2012-06-14T18:30:02.580 回答