getResourceAsStream的问题

时间:2010-09-14 20:21:46

标签: java web-applications

我正在编写上传和下载功能,我尝试使用这两种方法来写入或读取同一文件夹,我遇到了getResourceAsStream的一些问题。 (该软件在glassfish上运行)

上传:上传到此文件夹的方法:/home/phamtn8/glassfishv3/glassfish/domains/domain1/applications/Documents/Documents-war_war/drawings/Liandro.jpg - >工作很棒

下载:stream = the above path

input = this.getClass().getResourceAsStream(stream); //返回null

包含这些上传和下载方法的类文件的位置位于: /home/phamtn8/glassfishv3/glassfish/domains/domain1/applications/Documents/Documents-war_war/WEB-INF/classes/org/xdrawing/web。如果我将jpg文件放在此处,则getResourceAsStream可以正常工作。

注意:this.getClass.getName()返回org.xdrawing.web.FileName

请帮助!!!

1 个答案:

答案 0 :(得分:7)

getResourceAsStream(..)处理来自类路径根的路径。而你的似乎是机器的根源。所以请改用new FileInpuStream(fullPath)

实际上,还有另一个getResourceAsStream方法属于ServletContext。它处理来自Web应用程序根目录的路径,更适合Web应用程序。 (您的网络应用根目录为Documents-war_war/

但文件上传和下载的最佳做法是将它们存储在与您的Web应用程序完全不同的位置 - 比如/home/appname/uploads,以便您可以部署和取消部署Web应用程序而不会丢失任何数据。您只需要一个配置选项(例如<context-param>中的web.xml)指向上传的绝对位置,并分别使用FileInputStream方法(或OutputStream