Abd*_*lah 4 java servlets apache-commons-fileupload
我正在使用Apache公共文件上载库和Netbeans 6.8 + Glassfish.我正在尝试将当前上载路径更改为位于servlet的当前上下文路径中,如下所示:WEB-INF/upload
所以我写道:
File uploadedFile = new File("WEB-INF/upload/"+fileName);
session.setAttribute("path",uploadedFile.getAbsolutePath());
item.write(uploadedFile);
Run Code Online (Sandbox Code Playgroud)
但是我注意到库将上传的文件保存到glassfish文件夹中,这是我打印上传文件的绝对路径时得到的:
C:\Program Files\sges-v3\glassfish\domains\domain1\WEB-INF\upload\xx.rar
Run Code Online (Sandbox Code Playgroud)
我的问题 :
在java.io.File本地磁盘文件系统上的行为,并知道绝对没有关于它的运行环境.你不应该指望它来寻找"正确"的位置,当你传递一个相对的网络路径中.这将成为相对于当前的工作目录这取决于你如何启动环境.你不想依赖它.
您可以使用ServletContext#getRealPath()将相对Web路径转换为绝对本地磁盘文件系统路径.
String relativeWebPath = "/WEB-INF/uploads";
String absoluteFilePath = getServletContext().getRealPath(relativeWebPath);
File uploadedFile = new File(absoluteFilePath, FilenameUtils.getName(item.getName()));
// ...
Run Code Online (Sandbox Code Playgroud)
也就是说,我希望您知道部署文件夹不是上传文件的正确位置,这些文件应该永久保存.重新部署Web应用程序时,一切都会丢失.另请参阅如何将文件写入应用程序的resources/images文件夹?
| 归档时间: |
|
| 查看次数: |
16137 次 |
| 最近记录: |