gpt4 book ai didi

java - getResourceAsStream 的问题

转载 作者:行者123 更新时间:2023-12-01 07:41:52 27 4
gpt4 key购买 nike

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

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

下载:stream = 上述路径

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

请帮忙!!!

最佳答案

getResourceAsStream(..)处理从类路径根开始的路径。而你的似乎是机器的根。所以使用 new FileInpuStream(fullPath)相反。

其实还有一个getResourceAsStream属于 ServletContext 的方法。它从Web应用程序的根开始处理路径,并且更适合Web应用程序。 (您的网络应用程序根目录是 Documents-war_war/ )

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

关于java - getResourceAsStream 的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3712593/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com