HTTP multipart/form-data 上傳方式說明(有8個注意點)

來源:互聯網
上載者:User

標籤:user   com   資料   部分   str   live   view   pac   之間   

( From: http://home.meegoq.com/home-space-do-blog-uid-17-id-81.html )

HTTP multipart/form-data 上傳方式說明

已有 123 次閱讀 2010-12-1 11:13 |個人分類:網路學習|關鍵詞:HTTP multipart

http上傳檔案方面的功能使用的協議是rfc1867 (http://www.ietf.org/rfc/rfc1867.txt) 為 http 協議。用戶端的瀏覽器,如 Microsoft IE, Mozila, Opera 等,按照此規範將使用者指定的檔案發送到伺服器。伺服器端的網頁程式,如 php, asp, jsp 等,可以按照此規範,解析出使用者發送來的檔案。Microsoft IE, Mozila, Opera 已經支援此協議,在網頁中使用一個特殊的 form 就可以傳送檔案。絕大部分 http 伺服器,包括 tomcat ,已經支援此協議,可接受發送來的檔案。各種網頁程式,如 php, asp, jsp 中,對於上傳檔案已經做了很好的封裝。

請求報文頭如下,每一行後面如果沒有標明字元,說明其後沒有任何字元,直接連著下一行的字元:

POST /handset/save HTTP/1.1

\r\n

Host: gateway.ereneben.com

\r\n

Accept: */*

\r\n

User-Agent: T1 HTTP Adaptor

\r\n

Connection: Keep-Alive

\r\n

User-Serial: 1234567890ABCDEFGHIJKLMC

\r\n

User-Cert: Q+XuG7315JEIzRw9atIvjhCv0d8+4CN5ZGLZWBPs+1FjUcl5Bijd859rG4BUbIJrjoK2dbEuMMC8XmFAcuxJ2SSyXMty63iu0tnhsCJhgPmo4bFV0Px+V9CwKLixNa/+7bX2t3sCz7TMPfrYlKECF3xm4rB9q9/6htFKxCv99q4=

\r\n

User-ID: 122

\r\n

Content-Type: multipart/form-data; boundary=--------------------------7d93b91e2404d①

\r\n

Content-Length: 299⑦

\r\n

\r\n

-----------------------------7d93b91e2404d②

\r\n

Content-Disposition: form-data; name="update1"; filename="/Storage Card/eben.txt"

\r\n

Content-Type: application/octet-stream; charset=GBK

\r\n

Content-Transfer-Encoding: binary

\r\n

\r\n③

CkAtom C++ Class Reference (Visual C++)

\r\n④

-----------------------------7d93b91e2404d --⑤

\r\n⑥

說明:

①Content-Type必須指定boundary。其中前面的"---------------------------7d"是 IE 特有的標誌。其後的字串"7d93b91e2404d"是隨機產生的字串。Boundary是檔案上傳時表單中檔案分割線。

②請求報文體中的分割線

"-----------------------------7d93b91e2404d"

比boundary=---------------------------7d93b91e2404d

中的分割線前面多"--"。

③表單中上傳檔案的要求標頭和檔案資料之間的分割符是"\r\n \r\n"。與HTTP請求報文頭與報文體之間的分割符相同。

④上傳檔案結尾需要追加分割符"\r\n"。

⑤最後一個檔案結尾的分割線"-----------------------------7d93b91e2404da--",即boundary之前和結尾都需要追加"--"。最後一個分割線比較特殊,注意不要忘記後面的"--"。

⑥最後請求報文結尾需要追加分割符"\r\n"。

⑦ 最後需要注意的是請求報文頭中的Content-Length參數的值是整個報文體的長度。即從分割線②第一個字元開始,到報文結尾分割 符"\r\n"為止的整個長度。注意不要漏掉計算報文結尾分割符"\r\n"的長度,否則Content-Length參數的值變為了297, 就會出錯。

以上注意事項都必須遵守,否則請求就會出錯。

 

http://www.chongchonggou.com/g_92052682.html

HTTP multipart/form-data 上傳方式說明(有8個注意點)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.