日期:2014-05-18  浏览次数:20718 次

tomcat中,上传的文件的存储的默认相对根路径
用户使用网站上传的图片,java在保存它的时候(java.util.File)把存储图片的虚拟相对根目录存放在tomcat的bin目录下,

而网页在显示用户所上传的图片的时候,它是从webroot目录下去找存储文件的相对根目录的。由于两个相对根目录不一样,显示的时候网页会找不到用户上传的文件,怎么办?   (是配置tomcat把存储的相对根目录移到webroot目录下吗?如果是,怎么移?)

------解决方案--------------------
我一般是放到 WEB-INF/upload/.. 下面的,因为在 WEB-INF/下,就不怕盗链了..

你可以简单的保存 WebRootPath,, 即用context.getRealPath( "/ ") + /WEB-INF/upload/.. 取得绝对的路径,,
我的做法时在 ContextListiner中取得 WebRootPath,然后存到系统的 env中,在上传的的时候,

env.getWebRootPath() + file.name就可以了..
------解决方案--------------------
在Servlet中指定服务器上某个文件夹来保存文件:
// 获得服务器应用程序所在的绝对路径
String realPath = this.getServletContext().getRealPath(this.getServletName());
realPath = realPath.substring(0, realPath.lastIndexOf( "\\ "));
String uploadPath = realPath + "\\upload\\ "; // 用于存放上传文件的服务器目录绝对路径