之前我将上传的文件直接放在项目路径下
String root = ServletActionContext.getServletContext().getRealPath("/res");
这样的话在每次更新war包到tomcat的时候都会删除掉用户上传的文件,总不能每次更新时都用复制粘贴。
将文件上传路径分开无非是需要注意两个地方:
首先,用户访问资源url时,需要将用户访问地址关联到tomcat项目路径外的地址。
其次,文件写入的时候保存路径要变成相应的实际地址。
那么问题就好解决了:
更改tomcat 目录下的 service.xml配置文件,增加虚拟路径配置
当访问 http:
//localhost:8080/MyPlatform/photo/xxx.jpg或者是http://localhost:8080/MyPlatform/works/xxx.jar
的时候,tomcat就会把请求转发,去请求tomcat所在的物理机上的D盘下/usr/local/tomcat/res/photo下的文件.
接下来,文件写入,只需要把保存路径改了就行了
String root = ServletActionContext.getServletContext().getRealPath("../../res");
说到上传文件,对于我这种小型网站项目,把文件放在服务器磁盘,路径保存在数据库,另外只要注意处理文件命名,也不会出现重名覆盖的情况。