在Struts2的Action中保存文件的路径问题
这几天学习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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(8)
查了资料,发现是自己学艺不精了。应用运行的时候,是编译到tomcat里的,和工程源码的目录根本没关系。各位见笑了。
我知道呀,我就想知道怎么保存在工程目录呀。没用struts之前,在servlet是可以保存在工程目录的。不知道struts 要怎么搞
回复
那你再试一次servlet....
你就没弄懂tomcat运行的路径和工程路径区别,要保存在工程路径自己写绝对路径就可以了
回复
确实是自己学艺不精,惭愧了。现在明白了。
回复
没事,学习过程就这样
我一开始就是用servertContext来获取realpath,但是取出来的是D:Jamesworkspace.metadata.pluginsorg.eclipse.wst.server.coretmp1wtpwebappsLibrarySSHimage,我想要的是D:JamesworkspaceLibrarySSHimage。有办法实现这个吗?
String realPath = org.apache.struts2.ServletActionContext.getServletContext().getRealPath("/img");
这里的/img对相对于webapp目录的,realPath就是你需要的路径。