如何使用p:media标签从项目文件夹外部加载PDF

时间:2012-12-24 03:36:26

标签: jsf jsf-2 primefaces

<p:media value="C:/Users/xyz/Desktop/sample.pdf" width="100%" height="600px">    
</p:media>

我正在使用此代码加载放置在我桌面上的PDF,但它没有从那个地方加载PDF。我搜索了很多但无法找到原因。所以来自JSF专家我想知道它是它可以使用primefaces media标签从项目文件夹外部加载文件/ pdf / image(任何资源)?如果是,那么如何?

注意:如果我把它放在我项目的文件夹中,我可以加载这个pdf。但我想从外面加载它。
感谢

1 个答案:

答案 0 :(得分:2)

该值必须指向有效的URL,而不是指向本地磁盘文件系统路径。 Web浏览器必须从该URL下载PDF。并不是网络服务器必须按照您的预期以某种方式自动将PDF包含在HTML输出中。

您不能指望每个网页访问者在他们自己的本地磁盘文件系统上确切地拥有该PDF文件。更别说他们也运行Windows了。

简单的方法是将PDF移动到公共Web内容文件夹(您还将JSF页面放在其中)并将其引用如下

<p:media value="/sample.pdf" width="100%" height="600px" />

假设有问题的JSF页面是通过http://example.com/context/page.xhtml提供的,那么webbrowser将按http://example.com/context/sample.pdf下载PDF(并且您需要确保它也可以通过该URL单独提供)。

另一种选择,如果您不想将PDF文件放在您的webapp中,而是放在其他地方,则将该磁盘文件系统位置作为“虚拟主机”添加到服务器配置中,以便URL可以使用它。您可以在此处找到一些提示:How to show the server path image to PrimeFaces p:graphicImage?