我想将Primefaces UploadedFile
的副本保存到我的项目目录中。我一直在互联网上搜索解决方案,我发现使用Paths#get
方法。 this答案中给出的示例是Paths.get("/path/to/uploads");
,问题是,/path/to/uploads
的确切路径在哪里?我无法找到它。我的意思是我应该在哪里创建路径/path/to/uploads
?在我的项目目录下?但是哪个文件夹?我通过对Paths.get("C:/uploads/");
答案 0 :(得分:2)
FacesContext.getCurrentInstance().getExternalContext().getRealPath("/")
将返回项目的当前安装目录。
正如@Kukeltje建议的那样,永远不要将上传的文件保存到项目目录中,...将其保存在webapps之外,甚至保存在容器之外。
因此,在您的容器(您要放置上传的副本的位置)外部创建一个目录,并将../
附加到上述路径中以进行每个后退步骤。
比如说,如果您的应用程序部署在D:/Tools/Tomcat7/webapps/your-application-name
(例如在使用Tomcat的Windows上)并且您希望将副本保存到D:/Tools/uploads
,那么下面将为您提供所需的文件路径:
String uploadsFilePath = FacesContext.getCurrentInstance().getExternalContext()
.getRealPath("../../../uploads");
将其与Paths.get(uploadsFilePath)
一起使用并开发下载逻辑(我不确定您使用的Paths
类库。)
答案 1 :(得分:0)
getClassLoader().getResource(Path/to/file)
所以喜欢
MyClass.class.getResource(bla/bla)
现在嵌套在src/resources
像这样你是独立于系统的 的 #profit 强>
答案 2 :(得分:0)
您有几种选择:
还有更多选项(如果您在Windows上使用注册表,或使用环境变量)。