getResourceAsStream的问题

Tha*_*ham 0 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

请帮忙 !!!

Boz*_*zho 7

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

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

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