我可以使用UrlEncodedFormEntity为多部分上传图像和文本吗?

时间:2011-07-22 23:12:12

标签: java android image http multipart

图像通常需要特殊的HTTP标头,如:

Content-disposition: attachment; filename="file2.jpeg"
Content-type: image/jpeg
Content-Transfer-Encoding: binary

我正在使用以下方式构建POST:

List<NameValuePair> formparams = new ArrayList<NameValuePair>();
UrlEncodedFormEntity urlEncodedFormEntity = new UrlEncodedFormEntity(formparams);

urlEncodedFormEntity允许使用setContentType,但我看不出如何混合图像和文本?

1 个答案:

答案 0 :(得分:5)

try {
   File file = new File(Environment.getExternalStorageDirectory(),"FMS_photo.jpg");

   HttpClient client = new DefaultHttpClient();  
   HttpPost post = new HttpPost("http://homepage.com/path");  
   FileBody bin = new FileBody(file);  


   Charset chars = Charset.forName("UTF-8");

   MultipartEntity reqEntity = new MultipartEntity();  
   reqEntity.addPart("problem[photos_attributes][0][image]", bin);  
   reqEntity.addPart("myString", new StringBody("17", chars));

   post.setEntity(reqEntity); 
   HttpResponse response = client.execute(post);  

   HttpEntity resEntity = response.getEntity();  
   if (resEntity != null) {    
     resEntity.consumeContent();  
  }

   return true;

  } catch (Exception ex) {

    globalStatus = UPLOAD_ERROR;
    serverResponse = "";
    return false;
  } finally {

 }

在这个问题属性中将携带图像,myString携带字符串......