我有一个返回PDF URL的WebService。问题是CMS很糟糕,很脆弱,甚至可能不存在该文档。 (或者可能没有到CMS服务器的网络连接)
我使用的是Spring 3.2 MVC,我的控制器非常简单:
modelAndView.addObject("documentURL", service.getCmswsGetDocumentUrl());
和视图:
<object data="${documentURL}" width="600" height="800" type='application/pdf' >
如果文档存在,这一切都正常。
但是,我希望能够做到,比如一个javascript alert()或其他东西,如果文档不在那里。
有没有办法将pdf嵌入到modelAndView中,如
modleAndVIew.addObject("pdf",file);
或者某种方式我可以通过jQuery将数据添加到html对象?
我只是不想进行2次调用,一次是检索文档以查看是否可以,然后一次实际检索html对象标记中的文档。
有什么想法吗?
Adendum编辑:
我在控制器中对base64进行编码并将其传递给视图?
答案 0 :(得分:0)
二进制图像和对象标记的组合。这是控制器:
InputStream is = (new URL(service.getCmswsGetDocumentUrl())).openStream();
byte[] pdfBytes = IOUtils.toByteArray(is);
modelAndView.addObject("pdf",new String(Base64.encodeBase64(pdfBytes)));
和视图:
<object data="data:application/pdf;base64,${pdf}" width="600" height="800" type='application/pdf' >
</object>
这适用于FF和Chrome,但不适用于IE 我讨厌IE多少钱?我无法计算方法(1){waysIHateIE ++; }
看看IE中的开发者工具,数据=“”任何想法为什么?