2016-09-06 7 views
0

Я хочу отправить несколько изображений на сервер. Я создал растровое изображение для каждого выбранного изображения. Но последнее растровое изображение отправляется на сервер. Как отправить все изображения бит-карты сразу в android.I пробовал вот такКак отправить несколько растровых изображений на сервер

 class ImageUploadTask extends AsyncTask<String, Void, String> { 

     String sResponse = null; 

     @Override 
     protected void onPreExecute() { 
      // TODO Auto-generated method stub 
      super.onPreExecute(); 
      dialog = ProgressDialog.show(Room_addroom1.this, "Uploading", 
        "Please wait...", true); 
      dialog.show(); 
     } 



     @Override 
     protected String doInBackground(String... params) { 
      try { 

       String url ="http://airbnb.abservetech.com/demo/public/mobile/hotel/roomsadd"; 
       HttpClient httpClient = new DefaultHttpClient(); 
       HttpContext localContext = new BasicHttpContext(); 
       HttpPost httpPost = new HttpPost(url); 


       MultipartEntity entity = new MultipartEntity(HttpMultipartMode.BROWSER_COMPATIBLE); 
       int i=0; 
       mImageIds = new ArrayList<String>(); 
       ByteArrayBody mImageByteArray = null; 
       for (i = 0; i < ImgData.size(); i++) { 


        Log.d("ImgData(i)--", String.valueOf(ImgData.get(i))); 

        Bitmap bitmap = decodeFile(ImgData.get(i)); 

        String image = getStringImage(bitmap); 
        mImageIds.add(image); 
        Log.d("Image--", image); 

        ByteArrayOutputStream stream = new ByteArrayOutputStream(); 
        bitmap.compress(Bitmap.CompressFormat.PNG, 100, stream); 

        byteArray = stream.toByteArray(); 


        mImageByteArray = new ByteArrayBody(byteArray, Long.toString(System.currentTimeMillis()) + ".jpg"); 
        entity.addPart("room_images", mImageByteArray); 
        Log.d("ByteArray--", String.valueOf(mImageByteArray)); 
        // entity.addPart("room_images", mImageByteArray); 
      } 
       Log.d("ByteArray-out--", String.valueOf(mImageByteArray)); 

       /* entity.addPart("room_images", new ByteArrayBody(byteArray, 
         "image/jpeg", params[1]));*/ 

       entity.addPart("user_id", new StringBody("52")); 
       entity.addPart("room_type",new StringBody("premium")); 
       entity.addPart("room_prize", new StringBody("2356")); 

       httpPost.setEntity(entity); 

//    String entityContentAsString = new String(bos.toByteArray()); 
//    Log.e("multipartEntitty:", "" + entityContentAsString); 
       ByteArrayOutputStream bytes = new ByteArrayOutputStream(); 

       entity.writeTo(bytes); 

       String content = bytes.toString(); 
       String content1 = entity.toString(); 
     /*  Log.e("MultiPartEntityRequest:",content); 
       Log.e("MultiPartEntity---11:",content1);*/ 
       HttpResponse response = httpClient.execute(httpPost, 
         localContext); 
       sResponse = EntityUtils.getContentCharSet(response.getEntity()); 

       System.out.println("sResponse : " + sResponse); 
      } catch (Exception e) { 
       if (dialog.isShowing()) 
        dialog.dismiss(); 
       Log.e(e.getClass().getName(), e.getMessage(), e); 

      } 
      return sResponse; 
     } 

     @Override 
     protected void onPostExecute(String sResponse) { 
      try { 
       if (dialog.isShowing()) 
        dialog.dismiss(); 

       if (sResponse != null) { 

        count++; 
        if (count <ImgData.size()) { 
         Toast.makeText(getApplicationContext(), 
           sResponse + " Photo uploaded successfully", 
           Toast.LENGTH_SHORT).show(); 
//      new ImageUploadTask().execute(count + "", "hm" + count 
//        + ".jpg"); 
        } 
       } 

      } catch (Exception e) { 
       Toast.makeText(getApplicationContext(), e.getMessage(), 
         Toast.LENGTH_LONG).show(); 
       Log.e(e.getClass().getName(), e.getMessage(), e); 
      } 

     } 
    } 
+0

Вы не отправляете растровые изображения. Вы отправляете png-изображения. – greenapps

+0

Почему вы делаете растровые изображения из файлов? Из файлов jpg? Чтобы преобразовать их в png? Если вы хотите png, тогда все в порядке. В противном случае, почему вы непосредственно не загружаете jpg? – greenapps

+0

Я не знаю, как загрузить его в правильном формате –

ответ

0

Сначала вы можете создать растровое изображение base64. затем создайте jsonstring из этих всех base64 String растрового изображения и отправьте JsonString для публикации сервера. Это легко можно отправить несколько изображений на сервер.

Другой способ, Когда вы выбираете первое изображение, вы создаете base64 этого изображения при отправке base64 на сервер, затем выбираете другое изображение и конвертируете в base64 и отправляете другой base64 на сервер. Этот метод также использует для одного хранилища изображений для сервера.

+0

Я загружаю эти изображения во время создания комнаты. Поэтому я хочу загрузить несколько изображений вместе с другими деталями комнаты. –

0

попробовать это:

mImageIds = new ArrayList<String>(); 
for (i = 0; i < ImgData.size(); i++) { 


      Log.d("ImgData(i)--", String.valueOf(ImgData.get(i))); 
      Bitmap bitmap = decodeFile(ImgData.get(i)); 

      String image = getStringImage(bitmap); 
      mImageIds.add(image); 
      Log.d("Image--", image); 



        entity.addPart("images", new StringBody(image)); 

     } 

Единственного, что вы делали неправильно были вы intializing нового объекта ArrayList для каждой итерации для цикла. Итак, в ArrayList добавлен только последний элемент. Перемещение его снаружи решит вашу проблему.

+0

Я хочу передать внутри объекта, как этот entity.addPart («изображения», новый StringBody (изображение)); или entity.addPart ("images", новый StringBody ("" + mImageIds); @Aman Grover –

+0

посмотрите на мой обновленный ответ, чтобы лучше понять, что вы делаете неправильно, и как оно решит вашу проблему. –

+0

если я загружаю StringBody (изображение), как это означает, тогда создание списка массивов не обязательно am i right –

Смежные вопросы