2013-09-26 45 views
0

使用MultipartEntity不上載圖像。如何在Android HttpPost中使用MultipartEntity上傳圖片?

給出狀態碼200,但圖像沒有在服務器端更新。

String responseBody; 
      HttpClient client = new DefaultHttpClient(); 
      HttpPost request = new HttpPost(
        "http__zz/upload_picture?key=abc&property_id=10"); 

      MultipartEntity entity = new MultipartEntity(
        HttpMultipartMode.BROWSER_COMPATIBLE); 

      File file = new File(Environment.getExternalStoragePublicDirectory(
        Environment.DIRECTORY_DCIM).toString() 
        + "/Camera/Test.jpg"); 
      ContentBody encFile = new FileBody(file, "image/png"); 

      entity.addPart("picture", encFile); 

      request.setEntity(entity); 

      ResponseHandler<String> responsehandler = new BasicResponseHandler(); 
      responseBody = client.execute(request, responsehandler); 

      if (responseBody != null && responseBody.length() > 0) { 
       Log.w("TAG", "Response image upload" + responseBody); 

      } 
+0

請詳細說明您的問題。錯誤,如果有的話,預期的結果,實際的結果,使用的調試方法,爲什麼你會期望一個responseBody.length()> 0,...這裏沒有足夠的信息來理解你的問題 – njzk2

+0

給出狀態碼200,但圖像不是在服務器端更新。 – PrvN

+0

仍然沒有足夠的信息。 – njzk2

回答

0

爲什麼不嘗試發送它爲base64編碼的字符串?

1

嘗試使用的ByteArrayBody代替FileBody

File file = new File(Environment.getExternalStoragePublicDirectory(
        Environment.DIRECTORY_DCIM).toString() 
        + "/Camera/Test.jpg"); 
Bitmap b = BitmapFactory.decodeFile(file; 
ByteArrayOutputStream bao = new ByteArrayOutputStream(); 
b.compress(CompressFormat.JPEG, 100, bao); 

ByteArrayBody body = new ByteArrayBody(bao.toByteArray(), "image/jpeg", "picture"); 
entity.addPart("picture", body); 
相關問題