我有一个简单的 Spring MVC 控制器方法来返回 PDF:
@RequestMapping(value="/attachment/portfolios/{investorNum}/reports/{reportId}/periods/{reportingPeriod}")
public ResponseEntity<byte[]> getReportForDownload(@PathVariable String reportId, @PathVariable long investorNum, @PathVariable long reportingPeriod) throws IOException{
InputStream in = servletContext.getResourceAsStream("/sample.pdf");
final HttpHeaders headers = new HttpHeaders();
//headers.setContentType(MediaType.valueOf("application/pdf"));
headers.add("Content-Type", "application/pdf");
headers.add("Content-disposition", "attachment; filename=abcd.pdf");
return new ResponseEntity<byte[]>(IOUtils.toByteArray(in), headers, HttpStatus.CREATED);
}
还有一个弹簧字节数组消息转换器:
<bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
<property name="messageConverters">
<util:list>
<bean id="byteArrayMessageConverter" class="org.springframework.http.converter.ByteArrayHttpMessageConverter"/>
</util:list>
</property>
</bean>
还有一个 jQuery 模态框供下载:
"Download" : function() {
location.href = "./attachment/portfolios/2201/reports/DELINQSUM/periods/1137";
}
下载按钮在 FF、Chrome 中非常好用,但在 IE 中却不行。IE 说
Internet Explorer 无法从 localhost 下载 1137。
Internet Explorer 无法打开此 Internet 站点。请求的站点不可用或找不到。请稍后再试。
我按照http://support.microsoft.com/kb/316431和2中的标题进行操作,但没有任何反应,IE 继续报告问题。
此外,我正在通过以下更改在模态内流式传输 PDF 以进行嵌入式显示,并且效果很好:
headers.add("Content-disposition", "inline; filename=abcd.pdf");
我在tomcat上运行它。
非常感谢任何帮助。