如何获取公共网站内容资源的InputStream? [英] How to obtain an InputStream of a public webcontent resource?
问题描述
我在WAR中打包了一组图像,并使用<p:graphicImage>
在<p:dataGrid>
中对其进行了描绘.图像位于/resources/icons
文件夹中.我希望能够选择一个图像并将该图像的副本保存到提交时的磁盘上.
I have a collection of images packaged in my WAR and I depict them in a <p:dataGrid>
using <p:graphicImage>
. The images are located in the /resources/icons
folder. I want to be able to select an image and save a copy of this image to disk on submit.
这怎么办?如何获得对此图像的引用(InputStream
或其他内容)?
How can this be done? How can I get a reference (InputStream
or whatever) to this image?
推荐答案
给出此文件夹结构,
YourProject
|-- src
| `-- com
| `-- example
| `-- BackingBean.java
|-- WebContent
| |-- META-INF
| |-- WEB-INF
| |-- resources
| | `-- icons
| | `-- foo.png
| `-- foo.xhtml
:
您可以通过 ExternalContext#getResourceAsStream()
,它采用相对于webcontent的路径:
You can get it by either ExternalContext#getResourceAsStream()
which takes webcontent-relative path:
ExternalContext externalContext = FacesContext.getCurrentInstance().getExternalContext();
InputStream input = externalContext.getResourceAsStream("/resources/icons/foo.png");
// ...
或通过 Resource#getInputStream()
,其中Resource
是从
Or by Resource#getInputStream()
wherein Resource
is obtained from ResourceHandler#createResource()
which takes a /resources
-relative path:
ResourceHandler resourceHandler = FacesContext.getCurrentInstance().getApplication().getResourceHandler();
InputStream input = resourceHandler.createResource("icons/foo.png").getInputStream();
// ...
关于选择图像并传递其路径,只需执行以下操作:
As to selecting the image and passing its path around, just do something like as follows:
<h:graphicImage name="icons/foo.png">
<f:ajax event="click" listener="#{bean.setImage(component.name)}" />
</h:graphicImage>
<h:graphicImage name="icons/bar.png">
<f:ajax event="click" listener="#{bean.setImage(component.name)}" />
</h:graphicImage>
<h:commandButton value="submit" action="#{bean.saveImage}" />
另请参见:
- getResourceAsStream()vs FileInputStream
- 在基于servlet的应用程序中何处放置以及如何读取配置资源文件?
- Maven和JSF Webapp结构,确切地将JSF资源放在何处
- getResourceAsStream() vs FileInputStream
- Where to place and how to read configuration resource files in servlet based application?
- Maven and JSF webapp structure, where exactly to put JSF resources
See also:
这篇关于如何获取公共网站内容资源的InputStream?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!