gpt4 book ai didi

java - 如何使用 Apache Common fileupload 将上传文件的路径设置为 "context path"?

转载 作者:搜寻专家 更新时间:2023-11-01 01:48:07 24 4
gpt4 key购买 nike

我在 Netbeans 6.8 + Glassfish 中使用 Apache 通用文件上传库。我正在尝试将当前上传路径更改为 servlet 的当前上下文路径,如下所示:WEB-INF/上传

所以我写道:

File uploadedFile = new File("WEB-INF/upload/"+fileName);
session.setAttribute("path",uploadedFile.getAbsolutePath());
item.write(uploadedFile);

但我注意到该库将上传的文件保存到 glassfish 文件夹 中,这是我在打印上传文件的绝对路径时得到的:

C:\Program Files\sges-v3\glassfish\domains\domain1\WEB-INF\upload\xx.rar 

我的问题:

  • 如何强制通用文件上传将上传的文件保存在相对于当前 servlet 路径的路径中,这样我就不需要指定整个路径?这可能吗?

最佳答案

java.io.File 作用于本地磁盘文件系统,对它运行的上下文一无所知。你不应该期望它在你通过时找到“正确”的位置一个相对网络路径 in。它将成为相对于当前工作目录,这取决于您如何启动环境。你不想依赖它。

您可以使用 ServletContext#getRealPath()将相对 Web 路径转换为绝对本地磁盘文件系统路径。

String relativeWebPath = "/WEB-INF/uploads";
String absoluteFilePath = getServletContext().getRealPath(relativeWebPath);
File uploadedFile = new File(absoluteFilePath, FilenameUtils.getName(item.getName()));
// ...

也就是说,我希望您知道部署文件夹不是应该永久保存的上传文件的正确位置。当您重新部署 web 应用程序时,一切都会丢失。另见 How to write a file to resource/images folder of the app?

关于java - 如何使用 Apache Common fileupload 将上传文件的路径设置为 "context path"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2901961/

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