我正在开发一个jsf Web应用程序,我在其中将一些图像文件存储在我的本地计算机上,让我们说D:\images
。服务器仅在此计算机上运行。如何在我的Web应用程序上访问本地驱动器文件。
我试过
<p:graphicImage value="D:\\Temp\tec0178.jpg">
或
`<p:graphicImage value="D:/Temp/tec0178.jpg">`
这对我不起作用。 如果我将图像放在我的网络应用程序中
<p:graphicImage value="resources/images/Male.png"/>
它的工作。
答案 0 :(得分:1)
如果需要将其存储在部署应用程序的服务器上的物理位置,则可以使用File类在JAVA中使用基本的I / O操作。 本地驱动器可直接访问。
http://docs.oracle.com/javase/tutorial/essential/io/
你也可以探索Google Guava API。
使用Google Guava API的一个简单示例是:
File imageFile = new File("D:\\images", imgFileName);
FileOutputStream outputStream = new FileOutputStream(newAttachment);
ByteStreams.copy(inputStream, outputStream);
此外,要通过URL访问图像,您必须将目录添加为上下文。查看博客文章以URL格式访问图像文件:
http://th1rty7.blogspot.in/2009/05/tomcat-is-often-considered-to-be-too.html
答案 1 :(得分:0)
这不完全是JSF的答案,但我喜欢简单的想法:为什么不编写一个名为Images的servlet,例如,它接收相对于本地目录的路由的参数?该servlet将确切地知道要查找的位置(您可以将d:\ Images存储在某些属性中)并且将如此简单:
<img src="http://yourserver/yourapp/Images?route=someImage.jpg"></img>
会导致
ImagesServlet.java
...
// assume 'properties' is some way to access your application properties, be it in database,
// or .properties file, or whatever suits you best. In this case, it points to d:\Images
File imageFile = new File(properties.getRoute(), request.getParameter("route"));
InputStream is = new FileInputStream(imageFile);
ByteStreams.copy(inputStream, request.getOutputStream());
答案 2 :(得分:-1)
最好将图像存储在Web应用程序中。你可以称之为
<img src="\images\appimage.jpg">