struts2文件上传中action类中File类型的属性剖析


一般情况下处理下载的action类中需要有如下属性:

private File attachment;
private String attachmentFileName;
private String attachmentContentType;
其中attachment是任意的,但是其他两个属性中FileName及ContentTye是固定的,这是由struts2的源码决定的。

下面说重点:

File attachment这个属性是由struts2帮我们自己填充的,它是一个临时文件(也就是所attachment.getName()不等于attachmentFileName,attachmentFileName是由struts2帮我们填充的,attachmentFileName才是上传文件的真正的名字),一但文件上传完成后,这个临时文件是会被remove的,从console中输出的日志中可以找到remove此临时文件的记录。

也就是说struts2先把我们要上传的文件处理为在指定目录1(指定目录,下面另说)里的临时文件,然后在服务器端通过java IO保存在指定目录2中。

指定目录1:即是struts2中的default.properties中的指定的目录,默认情况是没有指定的,struts2的默认处理如下

# uses javax.servlet.context.tempdir by default
struts.multipart.saveDir=

我们可以在自定义的struts.properties文件中覆盖该属性,指定临时文件的位置

指定目录2:即在的action类处理上传方法中指定的目录,如下面的dataDir:

 public String upload() throws Exception {
        if (attachment != null) {
            // attachment will be null if there's an error,
            // such as if the uploaded file is too large
            String dataDir = servletContext.getRealPath("/WEB-INF/data");
            File savedFile = new File(dataDir, attachmentFileName);
            attachment.renameTo(savedFile);
            return SUCCESS;
        } else {
            return INPUT;
        }
        
    }

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值