【问题标题】:Handle / access files on the disk处理/访问磁盘上的文件
【发布时间】:2012-02-06 19:58:07
【问题描述】:

我正在使用带有 JSF 的 Java 和 Glassfish 3 容器。 在我的网络应用程序中,我正在尝试实现一个文件(图像)管理系统。

我有一个config.properties 文件,我从该文件中读取了应保存上传图像的路径。

save.file.path.event = D:\\upload

文件上传正常,所有文件都在原位,但是当我尝试列出图片时,浏览器说找不到图片。

<img src = "D:/upload/img1.png" />

Web 服务器位于完全不同的分区中。

除了 找不到图像 问题之外,我对这方面的良好做法有以下疑问:如果他们将是我将应用程序发布到 Web 服务器上的时间,那么安全/正确是使用D:\\upload 之类的路径?我想到的一些问题是操作系统之间的差异或分区名称的不确定性。

【问题讨论】:

    标签: java file-management file-manipulation


    【解决方案1】:

    您正在尝试使用本地路径引用图像。请记住,Web 浏览器(在客户端计算机上)正在解释该 img 标记,因此它将查看它自己的文件系统上的那个位置,而不是服务器的文件系统。您需要将链接指向您的服务器提供图像的网址。例如http://server/upload/img1.png

    【讨论】:

    • 谢谢!但是上传路径应该是什么样子的呢?我不认为像D:\\upload 这样的东西是最好的方法。
    • 把它放在本地文件系统上你想要的任何地方,只要它提供那个文件夹到“网络”的网络服务器。
    • 我该怎么做呢?是否也可以将上传文件夹放在应用程序中,并提供文件夹的相对路径
    【解决方案2】:

    好像有两种方法可以解决这个问题

    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>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-11-13
      • 1970-01-01
      • 2019-03-20
      • 2021-01-18
      • 1970-01-01
      • 2011-08-04
      • 2011-02-07
      • 2010-10-20
      相关资源
      最近更新 更多