• java上传组件commons-fileupload的一些使用方法


     http://www.apache.org,下载commons-fileupload-1.2.1.jar包,并把这个包加到工程中,以下是记录这个上传组件的一些使用方法。

             html测试页面,实现上传两个文件,并填写四个参数。

     

    [html] view plaincopy
    1. <span style="font-size:16px;"><form  action="../FileServlet" enctype="multipart/form-data" method="post" ></span>  
    [html] view plaincopy
    1. <span style="font-size:16px;"> <dt>本人名称:</dt>  
    2.  <dd><input type="text" name="name"  class="file-input" />dd>  
    3.  <dt>银行账户:</dt>  
    4.  <dd>< <input type="text" name="account"  class="file-input" /></dd>  
    5.  <dt>开户银行:</dt>  
    6.  <dd>< <input type="text" name="bank"  class="file-input" /><dd>  
    7.  <dt>身份证号:</dt>  
    8.  <dd> <input type="text" name="number"  class="file-input" /></dd>  
    9.  <dt>身份证照片:</dt>  
    10.  <dd><input type="file" name="photo"  class="file-input" /></dd>  
    11.  <dt>银行卡照片:</dt>  
    12.  <dd> <input  type="file" name="card"  class="file-input" /> </dd></span>  
    [html] view plaincopy
    1. <span style="font-size:16px;"></form> </span>  

     

             在上传文件的时候,form表单的entype必须是multipart/form-data,这种情况下,在台通过request.getParameter();方法就无法获得参数,返回的都是空值。所以这里就不能再使用getParameter()这个方法,下面介绍一下commons-fileupload里的一些方法。

              首先把请求消息实体中的每一个项目封装成单独的DiskFileItem(FileItem的实现)对象,这是通过使用实现了org.apache.commons.fileupload.FileItemFactory接口的org.apache.commons.fileupload.DiskFileItemFactory来完成的,当上传的文件比较小时,可直接保存在内存中,这样速度比较快,当文件较大时使用临时文件缓存。代码如下

       FileItemFactory factory= new DiskFileItemFactry();

       ServletFileUpload upload = new ServletFileUpload(factory);   //获得ServletFileUpload 对象upload

    List<FileItem> listItem = upload.parseRequest(request);           //解析request,把每个项目封装成单独的FileItem

    //遍历listItem

    for (FileItem item : listItem) {
        if(!item.isFormField()){//说明这个项目是个文件,上传到服务器
         String fileName = item.getName();  //这个名字文件的完整路径名
          String fileUploadName = fileName.substring(fileName
           .lastIndexOf("\") + 1);  //获得文件的名字,不包含路径
         item.write(new File(path, fileUploadName));  //写入磁盘,path是文件的写入路径
        }else{//这个项目就是一个参数可以获取

               

               String filed = item.getFieldName();  //获得这个参数名
               if (filed.equals("bank")) { //根据判断获得参数值,并赋给已声明的变量
                     bank = item.getString();
                }
              if (filed.equals("number")) {
                     number = item.getString();
         
               }
              if (filed.equals("account")) {
                    account = item.getString();

              }

     

       }

    }

          这样,即上传了文件,也获取到了页面参数。               

    Keep it simple!
    作者:N3verL4nd
    知识共享,欢迎转载。
  • 相关阅读:
    block: cfq 学习01
    SAS,SATA普及文档
    如何查看盘的类型
    [转载] Linux Futex的设计与实现
    C++ std::map的安全遍历并删除元素的方法
    我的vimrc配置
    .vimrc
    RC: blkio throttle 测试
    LTTng
    基于ADL5317的雪崩光电二极管(APD)偏压控制/光功率监测电路的设计
  • 原文地址:https://www.cnblogs.com/lgh1992314/p/5834800.html
Copyright © 2020-2023  润新知