我正在使用带有JSF的Java和Glassfish 3容器。 在我的Web应用程序中,我正在尝试实现文件(图像)管理系统。
我有一个config.properties
文件,我从那里读取了保存上传图片的路径。
save.file.path.event = D:\\upload
文件上传工作,所有文件都在他们的位置,但当我尝试列出图像时,浏览器说没有找到图像。
<img src = "D:/upload/img1.png" />
Web服务器位于完全不同的分区中。
除了没有找到图像问题之外,我还有以下关于这方面的良好做法的问题:如果他们将在我将在Web服务器上发布应用程序,那么安全性/正确性是多少?使用像D:\\upload
这样的路径?我想到的一些问题是操作系统之间的差异或分区名称的不确定性。
答案 0 :(得分:2)
您正尝试使用本地路径引用图像。请记住,Web浏览器(在客户端计算机上)正在解释该img标记,因此它将在它自己的文件系统而不是服务器的文件系统上查看该位置。您需要将链接指向服务器为其提供服务的Web地址。例如http://server/upload/img1.png
。
答案 1 :(得分:1)
似乎有两种方法可以解决这个问题
<强> 1。将文件放在应用程序
中如果应用程序名称为MyApplication
,则可以指定MyApplication/uploads/ images
之类的路径,文件将保存在实际应用程序中。此方法的缺点是,在每次重新部署或热部署时,文件都将被删除。
<强> 2。在Web容器配置中放置绝对路径
对于 Tomcat ,请转到:../ Apache Tomcat x.x.xx/conf/server.xml
,然后写:
<Context path="/web_uploads" docBase="C:/uploads/"/>
对于 Glassfish ,请转到:sun-web.xml
文件并写下:
<sun-web-app>
<property name="alternatedocroot_1" value="from=/uploads/* dir=C:"/>
</sun-web-app>