问题描述
小弟用smartupload上传文件时,为了设置上传的路径,用application.getRealPath("/")取得当前绝对路径。取得的居然会是myWorkspace/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/wtpwebapps/这个貌似是临时文件的路径,而不在我的工程目录中。上传成功后,在用http显示文件的时候,由于不在工程目录中,就访问不到了。请问能否有什么方法取得真实的工程路径,而不是上面的tmp0这个路径,或者其他解决方案。
解决方案
解决方案二:
获得项目绝对路径StringfilePath=this.getServletConfig().getServletContext().getRealPath("/");根目录所对应的绝对路径:request.getServletPath();文件的绝对路径:request.getSession().getServletContext().getRealPath(request.getRequestURI())当前web应用的绝对路径:servletConfig.getServletContext().getRealPath("/");在这里选一种吧
解决方案三:
估计你是直接用eclipse中的tomcat插件来跑你的工程的建议你不要使用tomcat插件直接用安装的tomcat跑你的工程修改tomcat->conf下的server.xml文件,查找Context标签做如下修改<Contextpath="/CygnetSystem"reloadable="true"docBase="G:WorkSpaceCygnetSystemWebRoot"/>path为应用访问路径即http://localhost/CygnetSystem中的/CygnetSystemdocBase则为工程代码路径
解决方案四:
1楼的结果和我一样;2楼的貌似是发布了,即我用eclipse编辑,然后发布到tomcat目录中,关闭eclipse,然后运行tomcat。这样是没有这个问题,但是调试不方便难道把docBase改成tomcat下的目录,在eclipse调试时调用request或application.getRealPath()就正常了吗?!