如何在Web应用程序中获取服务器本地驱动器路径?

时间:2014-01-10 07:19:48

标签: java jsf-2 primefaces

我正在开发一个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"/>

它的工作。

3 个答案:

答案 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">