2013-11-15 43 views
1

我想在我的web项目的根路径上创建一个临时文件夹来上传文件。我一派,使用:如何在SpringMVC中获取Web项目的根路径?

@RequestMapping(value = "/upload", method = RequestMethod.POST) 
public void torrent2magnet(HttpSession session) { 
    String uploadBaseDir = session.getServletContext().getRealPath("/")+File.separator+"uploadFiles"+File.separator; 
} 

可以获取到Web项目的相对路径。 有2个障碍如下:

1:session.getServletContext().getRealPath("/")可以在使用不同的容器(如tomcat或weblogic)时采取不同的行为。在最坏的情况下,它可能会返回null

2:我打算编写一个@Service类,其中将提供一个方法来返回当前Web项目的根路径。我如何在@Service类中获得ServletContext实例?

有没有更好的方法来解决这两个问题?非常感谢!

+0

你为什么不提供绝对路径到Web应用程序根目录作为一个可配置参数属性文件,数据库字段或环境变量。 – shazin

回答

1

Just Implement ServletContextAware接口自动注入ServletContext。覆盖setServletContext方法。请按照link

还有一个建议是,请准备好您的以外的application.that上传目录总是一个好的设计

+0

谢谢!你的意思是我只写了一个“/ home/myself/uplodFiles”的路径?它是否允许写入不是Web项目根目录的子路径的路径? – Judking

+0

绝对是!当上传文件的数量增加时,它将有助于将来 – Keerthivasan

+0

好,我会试试。再次感谢! – Judking

相关问题