在Struts2的Action中保存文件的路径问题

发布于 2021-11-28 03:40:32 字数 972 浏览 820 评论 8

      这几天学习Struts2的文件上传功能。我在action中获取到图片file后,想把它保存在我项目路径中。比如我的项目是MyProject,图片保存在 MyProjectWebContentimage 这个文件夹(项目在D盘)。但是怎么都不成功。我是这样做的:

一开始,我是这样做的

String path =ServletActionContext.getServletContext().getRealPath("/image");
File saveFile = new File(path);
FileUtils.copyFileToDirectory(imgFile, saveFile);

但是这样它却保存在了D:Jamesworkspace.metadata.pluginsorg.eclipse.wst.server.coretmp1wtpwebappsLibrarySSHimage这个目录下。上网百度了一下,发现原来getRealPath()这个方法是返回绝对路径,如果想想保存在项目的路径下,应该使用相对路径。然后我改了一下代码:

String path =ServletActionContext.getServletContext().getContextPath()+"/image";
File saveFile = new File(path);
FileUtils.copyFileToDirectory(imgFile, saveFile);



但是这样之后,它却保存在了 D:/image下了!!!上网找了很久都没找到答案,到底怎么样才能保存在项目路径下,求大神们给答案啊啊~~


如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(8

坚持沉默 2021-11-30 18:33:54

查了资料,发现是自己学艺不精了。应用运行的时候,是编译到tomcat里的,和工程源码的目录根本没关系。各位见笑了。

臻嫒无言 2021-11-30 17:13:01

我知道呀,我就想知道怎么保存在工程目录呀。没用struts之前,在servlet是可以保存在工程目录的。不知道struts 要怎么搞

可是我不能没有你 2021-11-30 16:55:49

回复
那你再试一次servlet....

多彩岁月 2021-11-30 15:33:54

你就没弄懂tomcat运行的路径和工程路径区别,要保存在工程路径自己写绝对路径就可以了

悸初 2021-11-30 04:25:17

回复
确实是自己学艺不精,惭愧了。现在明白了。

因为看清所以看轻 2021-11-30 04:11:24

回复
没事,学习过程就这样

永不分离 2021-11-29 21:36:50

我一开始就是用servertContext来获取realpath,但是取出来的是D:Jamesworkspace.metadata.pluginsorg.eclipse.wst.server.coretmp1wtpwebappsLibrarySSHimage,我想要的是D:JamesworkspaceLibrarySSHimage。有办法实现这个吗?

情栀口红 2021-11-29 06:10:05

String realPath = org.apache.struts2.ServletActionContext.getServletContext().getRealPath("/img");

这里的/img对相对于webapp目录的,realPath就是你需要的路径。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文