Struts2中的struts.multipart.saveDir的配置

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中设置:
<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中并没有"/",就像这样:
<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、干脆使用绝对路径,这样就不会有任何问题了,哈哈!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值