现在的位置: 首页 > 综合 > 正文

Struts2中的struts.multipart.saveDir的配置

2018年01月17日 ⁄ 综合 ⁄ 共 1373字 ⁄ 字号 评论关闭
Struts2中的struts.multipart.saveDir主要是用来设置上传文件的临时存放地址,而这个参数设置方法的不同对应的地址也不同。 

1、如果没有设置struts.multipart.saveDir,那么将默认使用javax.servlet.context.tempdir指定的地址,javax.servlet.context.tempdir的值是由服务器来确定的,例如:假如我的web工程的context是sencha,服务器使用Tomcat,那么savePath就应该是%TOMCAT_HOME%\work\Catalina\localhost\sencha,临时文件的名称类似于upload__1a156008_1373a8615dd__8000_00000001.tmp,每次上传的临时文件名可能不同,但是大致是这种样式。而且如果是使用Eclipse中的Servers里面配置Tomcat并启动的话,那么上面地址中的%TOMCAT_HOME%将不会是系统中的实际Tomcat根目录,而会是Eclipse给它指定的地址,例如我本地的地址是这样的:E:\workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\work\Catalina\localhost\sencha\upload__1a156008_1373a8615dd__8000_00000001.tmp。

2、如果设置了struts.multipart.saveDir,例如在struts.xml中设置:

Xml代码  收藏代码
  1. <constant name="struts.multipart.saveDir" value="/repository"/>  

那么文件存放的地址不会是大家想当然的在web工程的repository目录下,网上有人说在D盘下也就是D:\repository,但是我没有D盘,我本地的savePath是E:\repository,所以应该是选取非C盘的第一个逻辑磁盘创建struts.multipart.saveDir指定的文件夹并存放临时文件。 

3、如果设置了struts.multipart.saveDir但是value中并没有"/",就像这样:

Xml代码  收藏代码
  1. <constant name="struts.multipart.saveDir" value="repository"/>  

,那么repository文件夹会创建在user.dir位置下,使用Eclipse环境时,user.dir为我本地Eclipse的根目录E:\Program Files\Indigo,你可以通过System.getProperty("user.dir")查看,所以savePath就是E:\Program Files\Indigo\repository,在Tomcat下user.dir是Tomcat目录下的bin目录,所以应该是%TOMCAT_HOME%\bin\repository。 

4、干脆使用绝对路径,这样就不会有任何问题了,哈哈!

转自:http://mossad.iteye.com/blog/1522905

抱歉!评论已关闭.