– MultipartEntity – ByteArrayBody
其中MultipartEntity用來包裝整個(gè)請求的實(shí)體,而ByteArrayBody則用來包裝二進(jìn)制數(shù)據(jù)(即圖片)?,F(xiàn)在我們可以了解到,我們要上傳一張圖片到服務(wù)器,需要用到如下代碼:
HttpClient httpclient = new DefaultHttpClient(); HttpPost httppost = new HttpPost(url); ByteArrayBody contentBody = new ByteArrayBody(data, "image/jpeg", "filename"); MultipartEntity reqEntity = new MultipartEntity(); reqEntity.addPart("file", contentBody); httppost.setEntity(reqEntity); HttpResponse response = httpclient.execute(httppost);
其中url是服務(wù)器的地址,data是要上傳的圖片的數(shù)量,"image/jpeg"是圖片的格式,"filename"是文件名。此外,file是服務(wù)器端取這張圖片的字段名。
最后,我們要處理從服務(wù)器返回的結(jié)果。一種常見的方式是:使用HttpResponse.getEntity()獲得HttpEntity,然后使用EntityUtils.toString()將信息轉(zhuǎn)換成String類型。完整的代碼實(shí)現(xiàn)請見下文:
HttpClient httpclient = new DefaultHttpClient(); HttpPost httppost = new HttpPost(url); ByteArrayBody contentBody = new ByteArrayBody(data, "image/jpeg", "filename"); MultipartEntity reqEntity = new MultipartEntity(); reqEntity.addPart("file", contentBody); httppost.setEntity(reqEntity); HttpResponse response = httpclient.execute(httppost); HttpEntity resEntity = response.getEntity(); if (resEntity != null) { String resInfo = EntityUtils.toString(resEntity); //解析結(jié)果 }
到這里,我們已經(jīng)完成了Android上傳圖片至Web服務(wù)器的流程。 在實(shí)際的使用過程中,我們可能會(huì)遇到一些問題,比如服務(wù)端返回的ResultCode不為200,或是網(wǎng)絡(luò)出現(xiàn)問題,導(dǎo)致上傳失敗等等。在這種情況下,我們可以通過記錄日志和追蹤調(diào)試來分析問題并定位其位置,進(jìn)而進(jìn)行有針對性的處理。
綜上所述,本文介紹了Android通過PHP上傳圖片至Web服務(wù)器的步驟以及具體的實(shí)現(xiàn)方式,希望對大家有所幫助。 當(dāng)然,如果您有更多的疑問或需求,可以進(jìn)行深入學(xué)習(xí)和進(jìn)一步研究。