webwork中文件上传实现

step1:
页面定义如下
    <form action="upload.do" enctype="multipart/form-data" method="post">
            <input type="file" name="doc"/>
             ......................... 省略
   </form>

step2
    action 如下
    public class UploadAction extends ActionSupport {
          .....................................
          private File doc;// doc与页面取一样的名字

          public void setDoc(File doc) {
                 this.doc = doc;
         }

         //当然还可以使用以下的咚咚
  /*
     * public void setDocContentType(String docContentType) {
     * this.docContentType = docContentType; }
     *
     *//**
         *
         * @author weip
         * @time 0:23:24 2006-5-11
         * @param docFileName
         */
    /*
     * public void setDocFileName(String docFileName) { this.docFileName =
     * docFileName; }
     */

    /**
     *
     */
    /*
     * private String docContentType;
     *
     *//**
         *
         */
    /*
     * private String docFileName;
     */

.............................................................

   }

当程序进入到action当中时,你可以开始处理上面代码中的doc,此时文件已上传到服务器中的一个临时目录(同时被注入到action中就是你看到的doc),此临时目录由webwork.properties指定,你必须将此文件拷贝到你需要的目录,否则action执行完毕,此文件会被删除,准确说是拦截器的后处理删除了临时文件,这一段结论的前提是你使用拦截器处理上传

step3
处理配置文件,配置拦截器

<action name="upload" class="com.mofile.baby.web.action.signup.UploadAction">
          
            <result name="success" type="freemarker">/page/signup/uploadfile.htm</result>
            <interceptor-ref name="fileUpload"/>
            <interceptor-ref name="defaultWebStack"/>
         
  </action>

step4
对于webwork.properties的一些处理
webwork in action上推荐使用 webwork.multipart.parser=jakarta而不是默认的 pell,如果使用前者,不要忘了在你的lib中加入 commons-fileupload.jar


需要注意的问题:
你在使用
fileUpload传拦截器的时候应该避免使用execAndWait拦截器,否则很有可能会出现空指针,因为 execAndWait拦截器会在另一个线程处理action,而原来的线程会删掉临时文件,所以当你在action中处理文件的时候很有可能文件已被删掉,虽然这并非一定会出现,但毕竟不安全
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值