您的位置:首页 > 编程语言 > Java开发

详解struts.multipart.saveDir的临时文件路径

2015-02-02 10:06 330 查看
Struts2中的struts.multipart.saveDir主要是用来设置上传文件的临时目录,在不同的配置方式下,它的临时文件目录大有不同,好多人在设置后往往找不到这个临时目录在哪里,下面我就来详细说明一下。

注意:下面的web服务器以tomcat为例。

方法/步骤

配置一:不设置struts.multipart.saveDir

这种情况下,临时文件就放在tomcat安装目录下的"work\Catalina\localhost\项目名称"目录下。





配置二:

<constant name="struts.multipart.saveDir" value="/tempfile"/>

这种情况下,临时文件放在项目所在的根磁盘下的tempfile目录下。

如项目放在D盘,则该tempfile临时文件夹就在D盘根目录下。





配置三:

<constant name="struts.multipart.saveDir" value="tempfile"/>

这种情况比上面少了一个斜杠,这种情况下,临时文件放在项目所在的tomcat的bin目录下的tempfile目录下。

如项目放在D:\tomcat\webapps目录,则该tempfile临时文件夹就在D:\tomcat\bin目录下。





配置四:

<constant name="struts.multipart.saveDir" value="D:/mytemp/tempfile"/>

这种情况规定了绝对的路径,这种情况下,临时文件就在所配置的绝对路径了。即D:/mytemp/tempfile目录。

注意:mytemp文件夹先得手动建立好,否则会报错。





可以看出:以上四种方法都没能将临时目录设置在【项目】之中。

第四种方法看似可以做到将绝对路径设置为项目当中的路径,但是如果项目移植到别处,该绝对路径就会找不到,反而会报错,不适合。

第三种方法放在tomcat的bin目录下,不伦不类,破坏了tomcat程序的结构,所以也不适合。

第二种方法放在根目录下,这样某一天看到这个文件不知道从哪来,和哪个程序有关,被删了也说不定。所以也不适合。

算下来第一种方法不算最优,但也算相对较优了。最起码它和项目所在tomcat关联最近且不会破坏tomcat程序结构。

所以这个struts.multipart.saveDir干脆不设置了,留下时间做其他的事吧。

补充:网上还有另一种方法:

在系统启动的时候,用ServletContextListener修改系统属性。 System.setProperty("user.dir","你的Tomcat的目录下的webapps");

然后再配置<constant name="struts.multipart.saveDir" value="yourproject/temp"></constant>

这种方法我有下面两个疑问:

(1)你的Tomcat的目录下的webapps--》指的是d:/tomcat/webapps这个绝对路径么?

(2)如果是这个绝对路径,那项目移植到别处的时候,比如F盘,这个地方是不是还得把d改成f。如果是这样,那这个方法既配置麻烦又不好维护。

我自己试了试,反正是没成功,要是有谁成功了,记得评论给我。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: