2013-09-26 44 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); 
相关问题