1. <bdo id="8zfej"></bdo>
    <li id="8zfej"><meter id="8zfej"><th id="8zfej"></th></meter></li>

    南京中博教育

    全國(guó)咨詢電話:15195455103

    三分鐘了解中博教育
    當(dāng)前位置:南京中博教育 > 學(xué)習(xí)園地 > 編程技巧

    文件上傳的原理

    來(lái)源:未知? ? ? 作者:IT教育 ? ??

    一、表單元素的enctype屬性 通常情況下無(wú)須設(shè)置表單元素的enctype屬性,表單的enctype屬性指定的是表單數(shù)據(jù)的編碼方式,該屬性有如下3個(gè)值: ◆ application/x-www-form-urlencoded:這是默認(rèn)的編
    一、表單元素的enctype屬性
    通常情況下無(wú)須設(shè)置表單元素的enctype屬性,表單的enctype屬性指定的是表單數(shù)據(jù)的編碼方式,該屬性有如下3個(gè)值:
    ◆      application/x-www-form-urlencoded:這是默認(rèn)的編碼方式,它只處理表單域里的value屬性值,采用這種編碼方式的表單會(huì)將表單域的值處理成URL編碼方式
    ◆      multipart/form-data:這種編碼方式會(huì)以二進(jìn)制的方式來(lái)處理表單數(shù)據(jù),這種編碼方式會(huì)把文件域指定文件的內(nèi)容也封裝到請(qǐng)求參數(shù)里
    ◆      text/plain:這種編碼方式當(dāng)表單的action屬性為mailto:URL的形式時(shí)比較方便,這種方式主要適用于直接通過(guò)表單發(fā)送郵件的方式
     
    下面來(lái)看看enctype屬性為application/x-www-form-urlencoded和multipart/form-data時(shí)的差別

    <html>
        <head>
           <title>enctype屬性測(cè)試</title>
        </head>
        <body>
           <form action="pro.jsp" method="post"
               enctype="application/x-www-form-urlencoded">
               上傳文件:
               <input type="file" name="file" /><br />
               請(qǐng)求參數(shù):
               <input type="text" name="info" /><br />
               <input type="submit" value="提交" />
           </form>
        </body>
    </html>

     UpdateArticle
    注意:application/x-www-form-urlencoded是enctype屬性的默認(rèn)值
    提交到的pro.jsp代碼如下:
     

    <%@ page contentType="text/html; charset=GBK"%>
    <%@ page import="java.io.*"%>
    <%
        //獲取HTTP請(qǐng)求的輸入流
        InputStream is=request.getInputStream();
        //創(chuàng)建緩沖讀入流
        BufferedReader br=new BufferedReader(new InputStreamReader(is));
        //讀取HTTP請(qǐng)求內(nèi)容
        String buffer=br.readLine();
        while(buffer!=null){
           out.println(buffer);
           buffer=br.readLine();
        }
    %>

    以上代碼通過(guò)二進(jìn)制流來(lái)處理HTTP請(qǐng)求——這是一種更底層的處理方式,當(dāng)通過(guò)HttpServletRequest的getParameter方法來(lái)獲取請(qǐng)求參數(shù)時(shí),實(shí)際上是Web服務(wù)器替我們處理了這種底層的二進(jìn)制流,并將二進(jìn)制流轉(zhuǎn)換成對(duì)應(yīng)的請(qǐng)求參數(shù)值。
     
    請(qǐng)求數(shù)據(jù)中的文字轉(zhuǎn)碼

    public class TestURLEncoder {
        public static void main(String[] args)throws Exception {
           String encodeStr="%D0%EC%D6%DD";
           System.out.println(URLDecoder.decode(encodeStr,"GBK"));
          
           String rawStr="中博教育";
           System.out.println(URLEncoder.encode(rawStr,"GBK"));
        }
    }

     
    一般情況下,程序中直接通過(guò)HttpServletRequest的getParameter方法即可獲得正確的請(qǐng)求參數(shù),而那些底層的二進(jìn)制流處理,以及使用URLDecoder處理請(qǐng)求參數(shù),都由Web服務(wù)器來(lái)替我們完成了。
    但是做文件上串操作的話,僅僅只能獲得文件選擇器中數(shù)值,而不能獲得文件的內(nèi)容,為了實(shí)現(xiàn)文件上傳,必須設(shè)置enctype屬性值為:multipart/form-data

    分享到:

    相關(guān)閱讀:

    上一篇:沒(méi)有了

    下一篇:DIV+CSS入門之DIV分欄代碼

    近期文章

    搶試聽名額

    名額僅剩66名

    教育改變生活

    WE CHANGE LIVES

    主站蜘蛛池模板: 精品亚洲综合在线第一区| 亚洲国产品综合人成综合网站| 婷婷六月久久综合丁香76| 狠狠色综合久久婷婷| 日韩综合无码一区二区| 人人狠狠综合久久亚洲88| 色噜噜狠狠成人中文综合| 久久综合久久自在自线精品自| 精品无码综合一区| 精品亚洲综合久久中文字幕| 久久婷婷综合中文字幕| 无码专区久久综合久中文字幕 | 亚洲啪啪综合AV一区| 国产综合色香蕉精品五月婷| 国产精品无码久久综合| 丁香狠狠色婷婷久久综合| 亚洲色欲啪啪久久WWW综合网| 人人妻人人狠人人爽天天综合网| 一本久道久久综合狠狠躁AV| 一本色综合网久久| 久久一日本道色综合久久m| 国产亚洲综合色就色| 精品福利一区二区三区精品国产第一国产综合精品 | 奇米综合四色77777久久| 伊人亚洲综合青草青草久热| 亚洲VA综合VA国产产VA中| 女人和拘做受全程看视频日本综合a一区二区视频 | 亚洲综合在线成人一区| 97色伦图片97综合影院| 人人妻人人狠人人爽天天综合网| 亚洲av综合色区| 久久一日本道色综合久| 亚洲国产亚洲综合在线尤物| 久久久久高潮综合影院| 精品无码综合一区二区三区| 综合久久久久久中文字幕| 国产综合久久久久久| 久久综合伊人77777| 色欲综合久久躁天天躁蜜桃| 狠狠色丁香婷婷久久综合五月| 色综合天天综合网|