1. 程式人生 > >Android客戶端多檔案上傳

Android客戶端多檔案上傳

在web開發中,多檔案上傳時是非常方便的,直接使用Http協議提交資料即可。格式如下:

   <FORM METHOD=POST ACTION="http://192.168.1.101:8083/upload/servlet/UploadServlet" enctype="multipart/form-data">
            <INPUT TYPE="text" NAME="name">
            <INPUT TYPE="text" NAME="id">
            <input type="file" name="imagefile"/>
            <input type="file" name="zip"/>
         </FORM>

但是在Android客戶端中,如果文字和檔案一起上傳時就比較麻煩,需要對Http協議很熟悉才可以做到的。

一、HTTP協議

HTTP協議是一個很很複雜的過程,我們在做web開發時,底層其實都已經封裝好了,可以使用即可,我們所需要做的就是對HTTP請求格式很熟悉。 HTTP協議分為請求方法URI協議/版本,請求頭,請求體。
<span style="white-space:pre">	</span>GET/sample.jspHTTP/1.1                    //請求方法/請求路徑/協議版本


<span style="white-space:pre">	</span>Accept:image/gif.image/jpeg,*/*          
<span style="white-space:pre">	</span>Accept-Language:zh-cn
<span style="white-space:pre">	</span>Connection:Keep-Alive
<span style="white-space:pre">	</span>Host:localhost
<span style="white-space:pre">	</span>User-Agent:Mozila/4.0(compatible;MSIE5.01;Window NT5.0)
<span style="white-space:pre">	</span>Accept-Encoding:gzip,deflate


<span style="white-space:pre">	</span>username=jinqiao&password=1234
這是一個完整的HTTP請求。 請求的協議頭主要包括以下一些內容: 請求頭和請求體中間有一個空格,這個空格表示請求頭已經結束,下面的是請求體。 響應頭: 這即為整個的HTTP請求。

二、Android中的多檔案上傳

Android中使用HTTP GET或者POST方法提交資料在前文已經介紹過了。
程式碼在struts上傳檔案一文中已經貼出來了。 在程式碼中 ,我們需要自己動手完整的構造出整個HTTP請求的格式。 但有一個不同的地方; 首先是Content-Type:multipart/form-data;boundary=---------------------------7da2137580612;
因為表單型別為:multipart/form-data,上傳檔案使用的不在是HTTP協議,不在是name="--"的方式了,而是使用 分隔符 欄位內容 分隔符 欄位內容 比如: 請求頭 ---------------------------7da2137580612 Content-Disposition:form-data;name=“username” zhuzg ---------------------------7da2137580612 Content-Disposition:form-data;name=“imagefilename=“123.jpg” Content-Type:application/octet-stream ---------------------------7da2137580612----------- //結束標誌 (P.S.:後來在別的地方看到一篇類似的文章,附上鍊接:HTTP基礎知識