<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    posts - 0,  comments - 17,  trackbacks - 0
    by xyz

    在使用表單傳送數(shù)據(jù)的時(shí)候,如果form 加了enctype="multipart/form-data" 這個(gè)屬性,那么表單請求傳到另一個(gè)jsp或servlet 里時(shí)
    是不能用request.getParameter()來獲取到各個(gè)表單元素的值的。
    可以通用這樣(上傳組件提供的API):

    boolean isMultipart = ServletFileUpload.isMultipartContent(request);
     if (isMultipart) {
      // Create a factory for disk-based file items
      org.apache.commons.fileupload.FileItemFactory factory = new DiskFileItemFactory();

      // Create a new file upload handler
      ServletFileUpload upload = new ServletFileUpload(factory);
      // Parse the request
      List /* FileItem */items = upload.parseRequest(request);

      // Process the uploaded items
      Iterator iter = items.iterator();
     
      while (iter.hasNext()) {
       org.apache.commons.fileupload.FileItem item = (org.apache.commons.fileupload.FileItem) iter
         .next();
       if (item.isFormField()) {
        String name = item.getFieldName();
        String value = item.getString("GBK");
        //out.println(name + "=" + value);
        params.put(name.toUpperCase(), value.trim());
       } ......
    ===============================================================================
    使用multipart/form-data上傳時(shí),發(fā)送的請求和一般的http不一樣,需要轉(zhuǎn)化后才能讀其他參數(shù)。  
       
      如果你用spring,它提供一個(gè)MultiRequestResolver,只需要:  
      MultipartHttpServletRequest   multipartRequest   =   (MultipartHttpServletRequest)   request;  
      然后就能正常讀取參數(shù):  
      multipartRequest.getParameter("xxx");  
       
      以下是spring的處理方法,必須首先安裝commons-fileupload組件:  
       
      public   MultipartHttpServletRequest   resolveMultipart(HttpServletRequest   request)   throws   MultipartException   {  
      DiskFileUpload   fileUpload   =   this.fileUpload;  
      String   enc   =   determineEncoding(request);  
       
      //   use   prototype   FileUpload   instance   if   the   request   specifies  
      //   its   own   encoding   that   does   not   match   the   default   encoding  
      if   (!enc.equals(this.defaultEncoding))   {  
      fileUpload   =   new   DiskFileUpload();  
      fileUpload.setSizeMax(this.fileUpload.getSizeMax());  
      fileUpload.setSizeThreshold(this.fileUpload.getSizeThreshold());  
      fileUpload.setRepositoryPath(this.fileUpload.getRepositoryPath());  
      fileUpload.setHeaderEncoding(enc);  
      }  
       
      try   {  
      List   fileItems   =   fileUpload.parseRequest(request);  
      Map   parameters   =   new   HashMap();  
      Map   multipartFiles   =   new   HashMap();  
      for   (Iterator   it   =   fileItems.iterator();   it.hasNext();)   {  
      FileItem   fileItem   =   (FileItem)   it.next();  
      if   (fileItem.isFormField())   {  
      String   value   =   null;  
      try   {  
      value   =   fileItem.getString(enc);  
      }  
      catch   (UnsupportedEncodingException   ex)   {  
      logger.warn("Could   not   decode   multipart   item   '"   +   fileItem.getFieldName()   +  
              "'   with   encoding   '"   +   enc   +   "':   using   platform   default");  
      value   =   fileItem.getString();  
      }  
      String[]   curParam   =   (String[])   parameters.get(fileItem.getFieldName());  
      if   (curParam   ==   null)   {  
      //   simple   form   field  
      parameters.put(fileItem.getFieldName(),   new   String[]   {   value   });  
      }  
      else   {  
      //   array   of   simple   form   fields  
      String[]   newParam   =   StringUtils.addStringToArray(curParam,   value);  
      parameters.put(fileItem.getFieldName(),   newParam);  
      }  
      }  
      else   {  
      //   multipart   file   field  
      CommonsMultipartFile   file   =   new   CommonsMultipartFile(fileItem);  
      multipartFiles.put(file.getName(),   file);  
      if   (logger.isDebugEnabled())   {  
      logger.debug("Found   multipart   file   ["   +   file.getName()   +   "]   of   size   "   +   file.getSize()   +  
              "   bytes   with   original   filename   ["   +   file.getOriginalFilename()   +   "],   stored   "   +  
              file.getStorageDescription());  
      }  
      }  
      }  
      /*****   注意   parameters   就是普通的text之類的字段的值   *****/  
      return   new   DefaultMultipartHttpServletRequest(request,   multipartFiles,   parameters);  
      }  
      catch   (FileUploadBase.SizeLimitExceededException   ex)   {  
      throw   new   MaxUploadSizeExceededException(this.fileUpload.getSizeMax(),   ex);  
      }  
      catch   (FileUploadException   ex)   {  
      throw   new   MultipartException("Could   not   parse   multipart   request",   ex);  
      }  
      }  
    ====================================================================================================
    <form name="userInfo" method="post" action="first_submit.jsp"  ENCTYPE="multipart/form-data">
    表單標(biāo)簽中設(shè)置enctype="multipart/form-data"來確保匿名上載文件的正確編碼。
    如下:
     <tr>
        <td height="30" align="right">上傳企業(yè)營業(yè)執(zhí)照圖片:</td>
        <td><INPUT TYPE="FILE" NAME="uploadfile" SIZE="34"  onChange="checkimage()"></td>
      </tr>
    就得加ENCTYPE="multipart/form-data"。
    表單中enctype="multipart/form-data"的意思,是設(shè)置表單的MIME編碼。默認(rèn)情況,這個(gè)編碼格式是application/x-www-form-urlencoded,不能用于文件上傳;只有使用了multipart/form- data,才能完整的傳遞文件數(shù)據(jù),進(jìn)行下面的操作.
    enctype=\"multipart/form-data\"是上傳二進(jìn)制數(shù)據(jù); form里面的input的值以2進(jìn)制的方式傳過去。
    form里面的input的值以2進(jìn)制的方式傳過去,所以request就得不到值了。 也就是說加了這段代碼,用request就會(huì)傳遞不成功,

    取表單值加入數(shù)據(jù)庫時(shí),用到下面的:
     SmartUpload su = new SmartUpload();//新建一個(gè)SmartUpload對(duì)象
     su.getRequest().getParameterValues();取數(shù)組值
     su.getRequest().getParameter( );取單個(gè)參數(shù)單個(gè)值

    posted on 2008-03-14 10:52 xyz 閱讀(63065) 評(píng)論(5)  編輯  收藏 所屬分類: 我的文章

    FeedBack:
    # re: 表單form的enctype="multipart/form-data"使用體會(huì)[未登錄]
    2012-03-26 17:13 | s
    # re: 表單form的enctype="multipart/form-data"使用體會(huì)[未登錄]
    2013-01-29 14:28 | 111
    # re: 表單form的enctype="multipart/form-data"使用體會(huì)
    2013-03-29 11:33 | asdfsd
    # re: 表單form的enctype="multipart/form-data"使用體會(huì)
    2013-03-29 11:33 | asdfsd
    # re: 表單form的enctype="multipart/form-data"使用體會(huì)[未登錄]
    2015-07-27 18:52 | zxw
    受教了  回復(fù)  更多評(píng)論
      

    只有注冊用戶登錄后才能發(fā)表評(píng)論。


    網(wǎng)站導(dǎo)航:
     

    <2015年7月>
    2829301234
    567891011
    12131415161718
    19202122232425
    2627282930311
    2345678

    留言簿

    隨筆檔案(1)

    文章分類(44)

    文章檔案(46)

    收藏夾(1)

    Adobe

    AOP

    API

    appServer

    BI

    c

    • c-free
    • codeblocks
    • codelite
    • CodeLite IDE 是一個(gè)強(qiáng)大的開源,跨平臺(tái)的 C/C++整合開發(fā)環(huán)境. 支持包括 Windows、Linux 和 Mac 系統(tǒng)下運(yùn)行
    • codelite官網(wǎng)
    • dev-c++
    • Dev-C++是一個(gè)C&C++開發(fā)工具,它是一款自由軟件,遵守GPL協(xié)議。
    • GCC
    • GCC 原名為 GNU C 語言編譯器(GNU C Compiler),因?yàn)樗局荒芴幚?C語言。GCC 很快地?cái)U(kuò)展,變得可處理 C++。之后也變得可處理 Fortran、Pascal、Objective-C、Java, 以及 Ada 與其他語言。

    Cache

    CMS

    DB

    eclipse

    FreeMarker

    hibernate

    html5

    ibatis

    java

    jquery

    js

    json

    Linux

    Log

    mail server

    mobile

    mysql

    oauth

    openID

    other

    PHP

    portal

    report

    Scheduler

    schema

    Security

    SOA

    spring

    struts

    UI原型設(shè)計(jì)

    w3c

    Wap

    webservice

    xml

    供應(yīng)鏈管理

    博客鏈接

    好網(wǎng)站

    工作流

    開源網(wǎng)

    招聘

    插件下載

    操作系統(tǒng)

    構(gòu)建可伸縮的系統(tǒng)

    構(gòu)建工具

    測試

    • IETest
    • IE官網(wǎng)
    • OpenSTA
    • Siege
    • Siege是一個(gè)壓力測試和評(píng)測工具,設(shè)計(jì)用于WEB開發(fā)這評(píng)估應(yīng)用在壓力下的承受能力

    游戲

    源碼托管

    經(jīng)營

    資源

    金融/財(cái)務(wù)

    搜索

    •  

    最新評(píng)論

    主站蜘蛛池模板: 亚洲AV女人18毛片水真多| 香蕉视频在线观看亚洲| 国产午夜免费秋霞影院| 毛片a级毛片免费观看免下载| 91亚洲精品视频| 亚洲国产日韩一区高清在线| 美女被羞羞网站免费下载| 亚洲另类自拍丝袜第1页| 亚洲精品视频在线观看视频| 亚洲熟妇av一区二区三区下载| 国产99视频免费精品是看6| 日本免费v片一二三区| 免费一级毛片在级播放| 日产国产精品亚洲系列| 免费人妻无码不卡中文字幕系| 亚洲乱码中文字幕在线| 亚洲成在人线aⅴ免费毛片| 亚洲av色香蕉一区二区三区蜜桃| 亚洲AV乱码一区二区三区林ゆな| 日本一道综合久久aⅴ免费| 亚洲av无码天堂一区二区三区| 成人午夜免费福利视频| 99精品全国免费观看视频| 最好免费观看韩国+日本| 亚洲精品国产精品乱码不卞| 亚洲成aⅴ人片久青草影院| 在线亚洲97se亚洲综合在线| 亚洲不卡av不卡一区二区| 亚洲最大在线视频| 亚洲一线产品二线产品| 午夜肉伦伦影院久久精品免费看国产一区二区三区 | 最新精品亚洲成a人在线观看| 成人A级毛片免费观看AV网站| 久久久久久久99精品免费| 亚洲精品免费在线视频| 日韩免费一级毛片| 亚洲综合在线另类色区奇米| 久久精品国产亚洲AV电影| 亚洲熟伦熟女专区hd高清| 日韩精品无码永久免费网站| 国产成人久久AV免费|