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

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

方法/步骤

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

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

  2. 配置二:

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

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

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

  3. 配置三:

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

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

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

  4. 配置四:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    我自己试了试,反正是没成功,要是有谁成功了,记得评论给我。

详解struts.multipart.saveDir的临时文件路径的更多相关文章

  1. Struts2中的struts.multipart.saveDir的配置

    <constant name="struts.multipart.saveDir" value="D:\\AsimsTemp"></const ...

  2. 上传文件报错--Unable to find 'struts.multipart.saveDir' property setting.

    struts2 上传文件时,有时候会报这个错误. Unable to find 'struts.multipart.saveDir' property setting. Defaulting to j ...

  3. Unable to find ‘struts.multipart.saveDir’ Struts2上传文件错误的解决方法

    Unable to find ‘struts.multipart.saveDir’ Struts2上传文件错误的解决方法 在使用struts2的项目中上传文件的时候出现了一个这样的错误: 2011-7 ...

  4. Unable to find 'struts.multipart.saveDir' property setting.

    今天在项目开发中遇到如下问题 项目使用的是struts2 Unable to find 'struts.multipart.saveDir' property setting. 后来在网上查询特此记录 ...

  5. INFO Dispatcher:42 - Unable to find 'struts.multipart.saveDir' property setting. Defaulting to javax.servlet.context.tempdir

    INFO Dispatcher:42 - Unable to find 'struts.multipart.saveDir' property setting. Defaulting to javax ...

  6. Struts2-整理笔记(一)介绍、搭建、流程、详解struts.xml

    Struts2是一种前端的技术框架 替代Servlet来处理请求   Struts2优势 自动封装参数 参数校验 结果的处理(转发|重定向) 国际化 显示等待页面 表单的防止重复提交   搭建框架:导 ...

  7. iOS 2D绘图详解(Quartz 2D)之路径(点,直线,虚线,曲线,圆弧,椭圆,矩形)

    前言:一个路径可以包含由一个或者多个shape以及子路径subpath,quartz提供了很多方便的shape可以直接调用.例如:point,line,Arc(圆弧),Curves(曲线),Ellip ...

  8. S2SH框架集成详解(Struts 2.3.16 + Spring 3.2.6 + Hibernate 3.6.10)

    近期集成了一次较新版本的s2sh,出现了不少问题,网上资料也是良莠不齐,有的甚至就是扯淡,简单的把jar包扔进去就以为是集成成功了,在这里整理一下详细的步骤,若哪位有什么不同看法,可以留言,欢迎批评改 ...

  9. iOS 2D绘图详解(Quartz 2D)之路径(stroke,fill,clip,subpath,blend)

    Stroke-描边 影响描边的因素 线的宽度-CGContextSetLineWidth 交叉线的处理方式-CGContextSetLineJoin 线顶端的处理方式-CGContextSetLine ...

随机推荐

  1. fedora之防火墙

    通过iptables的设置可以学一些东西 从配置菜单关闭防火墙是不起作用的,索性在安装的时候就不要装防火墙查看防火墙状态:/etc/init.d/iptables status暂时关闭防火墙:/etc ...

  2. 配置MySQL使用HugePages

    前言:对于有Oracle运维经验的童鞋来说,如果服务器内存很大,一般都会设置HugePages,是因为如下原因:对于 Linux 操作系统,通过 Linux kswapd 进程和页表内存结构(针对系统 ...

  3. 制作计算器的代码(C#)

    using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; usin ...

  4. 【HDOJ】4351 Digital root

    digital root = n==0 ? 0 : n%9==0 ? 9:n%9;可以简单证明一下n = a0*n^0 + a1*n^1 + ... + ak * n^kn%9 = a0+a1+..+ ...

  5. NLog 传递参数

    用NLog记文件日志,一般都用{$basedir}变量,把日志记在运行的目录或者它的子目录下,遇到要写在其他目录的下,看了下Nlog找到用环境变量传参数. .net 里写 Environment.Se ...

  6. apache开源项目--TIKA

    Tika是一个内容抽取的工具集合(a toolkit for text extracting).它集成了POI, Pdfbox 并且为文本抽取工作提供了一个统一的界面.其次,Tika也提供了便利的扩展 ...

  7. data guard折腾记一

    终于有空闲的机器腾出来了,生产环境上的一套Oracle环境终于可以鸟枪换炮了,生产环境有Data Guard,为了减少停机时间,而且避免重新构建Data Guard的麻烦(其实也不麻烦,就是浪费时间) ...

  8. (二)学习C#之内存管理

    一.当你运行你的程序通常都会访问哪些内存空间呢? 电脑自言自语道,“这个人要声明一个整数”或“这个人个方法”或“这个人要创建一个对象” 1.这些信息究竟是存在内存里的什么地方呢? 2.或者说用于描述这 ...

  9. 交易的成功 = 60%的资金管理 + 40%出入场信号 zt

    交易的成功 = 60%的资金管理 + 40%出入场信号. 资金管理   = 60%的风险分散 + 40%的适度重或轻仓. 出入场信号 = 60%的出场信号 + 40%的入场信号. 交易的成功 = 36 ...

  10. alibaba笔试1

    5.D 一个线程不可以改变另一个线程的程序计数器.如果改变了,线程在切换后就恢复不到正确的位置. 一个线程可以访问另一个线程的栈.http://bbs.csdn.net/topics/39008942 ...