2014-11-05 4 views
0

У меня есть код для отправки текста и нескольких изображений в один запрос на сервер, в моем случае я прохожу через локальную базу данных, чтобы получить данные и несколько изображений, чтобы я мог использовать addPart(key, textdata); для текстовые данные и addPart(key, filename, inputstream, "application/octet-stream"); для данных изображения. Но проблема в том, что, когда у меня есть несколько изображений в одном запросе, я могу отправить только один из них. Вот мои полные code. Основная проблема возникает в строке 31, когда у меня есть более одного изображения, она отправляет только одну из них. Буду признателен за любую помощь. Спасибо.Отправка многоформатных данных формы с изображением и текстом в android

ответ

1

Проблемы я думаю, что это может быть здесь

reqEntity.addPart("myFile", yourImage); 

В этом ключе (Myfile) остается одинаковым для всех изображений. поэтому, когда ваши изображения больше одного, он продолжает перезаписывать предыдущее изображение. Так что я думаю, вы должны прикрепить индекс с ключом (начиная от 0,1 и так далее), что-то вроде этого, например

reqEntity.addPart("myFile_"+i, yourImage); 

А также отправить IMAGE_COUNT на сервер вместе с изображениями, так что это будет узнайте, сколько изображений вы действительно отправляете, и имея простой цикл для конца сервера, они смогут получить все эти изображения. надеюсь это поможет.

+0

Спасибо вам, я изменил некоторые из моего кода, и ваше предложение действительно работает! –

+0

рад помочь вам .. :) –

0

Попробуйте этот путь

  String sResponse = ""; 
      String url = "http://www.api.in/rpcs/uploadfiles/?"; 
      HttpClient httpClient = new DefaultHttpClient(); 
      HttpPost httpPost = new HttpPost(url); 
      MultipartEntity entity = new MultipartEntity(); 


      options1.inPreferredConfig = Bitmap.Config.ARGB_8888; 

      byte[] data1 = null,data2= null,data3= null,data4= null,data5= null; 

      if(PreferenceManager.getDefaultSharedPreferences(getBaseContext()).contains("endum_image_0")) 
      {  up_image1 = PreferenceManager.getDefaultSharedPreferences(getBaseContext()).getString("endum_image_0", ""); 
        bitmap = BitmapFactory.decodeFile(up_image1, options1); 
        bitmap.compress(CompressFormat.JPEG, 100, bos1); 
        data1 = bos1.toByteArray(); 
      } 
      if(PreferenceManager.getDefaultSharedPreferences(getBaseContext()).contains("endum_image_1")) 
      {  up_image2 = PreferenceManager.getDefaultSharedPreferences(getBaseContext()).getString("endum_image_1", ""); 
        bitmap = BitmapFactory.decodeFile(up_image2, options1); 
        bitmap.compress(CompressFormat.JPEG, 100, bos2); 
        data2 = bos2.toByteArray(); 
      } 

      if(PreferenceManager.getDefaultSharedPreferences(getBaseContext()).contains("endum_image_2")) 
      {  up_image3 = PreferenceManager.getDefaultSharedPreferences(getBaseContext()).getString("endum_image_2", ""); 
        bitmap = BitmapFactory.decodeFile(up_image3, options1); 
        bitmap.compress(CompressFormat.JPEG, 100, bos3); 
        data3 = bos3.toByteArray(); 
      } 

      if(PreferenceManager.getDefaultSharedPreferences(getBaseContext()).contains("endum_image_3")) 
      {  up_image4 = PreferenceManager.getDefaultSharedPreferences(getBaseContext()).getString("endum_image_3", ""); 
        bitmap = BitmapFactory.decodeFile(up_image4, options1); 
        bitmap.compress(CompressFormat.JPEG, 100, bos4); 
        data4 = bos4.toByteArray(); 
      } 

      if(PreferenceManager.getDefaultSharedPreferences(getBaseContext()).contains("endum_image_4")) 
      {  up_image5 = PreferenceManager.getDefaultSharedPreferences(getBaseContext()).getString("endum_image_4", ""); 
        bitmap = BitmapFactory.decodeFile(up_image5, options1); 
        bitmap.compress(CompressFormat.JPEG, 100, bos5); 
        data5 = bos5.toByteArray(); 
      } 




      entity.addPart("post_id", new StringBody(post_id)); 
      entity.addPart("user_id", new StringBody(user_id)); 
      entity.addPart("cat_id", new StringBody(category)); 

      if(data1!=null){ 
      entity.addPart("files[]", new ByteArrayBody(data1,"image/jpeg", "u1.jpg")); 
      } 
      if(data2!=null){ 
      entity.addPart("files[]", new ByteArrayBody(data2,"image/jpeg", "u2.jpg")); 
      } 
      if(data3!=null){ 
      entity.addPart("files[]", new ByteArrayBody(data3,"image/jpeg", "u3.jpg")); 
      } 
      if(data4!=null){ 
      entity.addPart("files[]", new ByteArrayBody(data4,"image/jpeg", "u4.jpg")); 
      } 
      if(data5!=null){ 
      entity.addPart("files[]", new ByteArrayBody(data5,"image/jpeg", "u5.jpg")); 
      } 



      httpPost.setEntity(entity); 
      HttpResponse response = httpClient.execute(httpPost); 

      BufferedReader reader = new BufferedReader(new InputStreamReader(response.getEntity().getContent(), "UTF-8")); 

      StringBuilder s = new StringBuilder(); 

      while ((sResponse = reader.readLine()) != null) 
      { 
       s = s.append(sResponse); 
      } 

      if(response.getStatusLine().getStatusCode() == HttpStatus.SC_OK) 
      { 
       return s.toString(); 
      }else 
      { 
       return "{\"status\":\"false\",\"message\":\"Some error occurred\"}"; 
      } 
Смежные вопросы