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

    南京中博教育

    全國咨詢電話:17368476151

    三分鐘了解中博教育
    當前位置:南京中博教育 > 學習園地 > 編程技巧

    文件上傳的原理

    來源:未知? ? ? 作者:IT教育 ? ??

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

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

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

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

    以上代碼通過二進制流來處理HTTP請求——這是一種更底層的處理方式,當通過HttpServletRequest的getParameter方法來獲取請求參數時,實際上是Web服務器替我們處理了這種底層的二進制流,并將二進制流轉換成對應的請求參數值。
     
    請求數據中的文字轉碼

    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"));
        }
    }

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

    分享到:

    相關閱讀:

    上一篇:沒有了

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

    近期文章

    搶試聽名額

    名額僅剩66名

    教育改變生活

    WE CHANGE LIVES

    主站蜘蛛池模板: 91精品国产综合久久青草| 色欲综合久久躁天天躁| 国产成人综合野草| 免费精品99久久国产综合精品| 亚洲综合欧美色五月俺也去| 亚洲丁香色婷婷综合欲色啪| 亚洲第一页综合图片自拍| 亚洲狠狠久久综合一区77777| 久久精品水蜜桃av综合天堂| 色欲香天天综合网站| 久久婷婷五月综合尤物色国产| 一本色道久久88亚洲精品综合 | 国产91色综合久久免费| 日韩亚洲国产综合久久久| 国产美女亚洲精品久久久综合| 国产精品亚洲综合网站| 久久香综合精品久久伊人| 久久精品综合一区二区三区| 久久综合九色综合久99| 无码专区久久综合久中文字幕 | 亚洲综合无码AV一区二区 | 亚洲AV综合永久无码精品天堂| 一本色道久久99一综合| 色综合久久一本首久久| 天天综合天天做天天综合| 亚洲国产综合精品中文第一| 久久国产精品亚洲综合| 亚洲情综合五月天| 亚洲伊人tv综合网色| 久久久综合中文字幕久久| 亚洲国产成人久久综合一 | 色综合久久久久无码专区 | 亚洲人成伊人成综合网久久| 狠狠色噜噜狠狠狠狠狠色综合久久| 国产成人综合久久久久久| HEYZO无码综合国产精品| 伊伊人成亚洲综合人网7777| 色婷婷综合久久久中文字幕| 色欲久久久天天天综合网| 色悠久久久久综合网香蕉| 激情综合色综合久久综合|