2017-09-06 9 views
0

イメージのサイズが20kb未満の場合は4つのイメージをサーバーにアップロードし、そうでない場合は正常にアップロードしたアプリケーションがあります。イメージはアプリケーションからアップロードされていません

compile 'com.squareup.okhttp3:okhttp:3.8.1' 

、サーバに画像をアップロードするには、このコードを配置: はここ

 public void ImageUploadToServerFunction() { 

      ByteArrayOutputStream byteArrayOutputStreamObject1,byteArrayOutputStreamObject2,byteArrayOutputStreamObject3,byteArrayOutputStreamObject4; 

      byteArrayOutputStreamObject1 = new ByteArrayOutputStream(); 
      byteArrayOutputStreamObject2 = new ByteArrayOutputStream(); 
      byteArrayOutputStreamObject3 = new ByteArrayOutputStream(); 
      byteArrayOutputStreamObject4 = new ByteArrayOutputStream(); 

      bitmap1.compress(Bitmap.CompressFormat.JPEG, 0, byteArrayOutputStreamObject1); 
      bitmap2.compress(Bitmap.CompressFormat.JPEG, 0, byteArrayOutputStreamObject2); 
      bitmap3.compress(Bitmap.CompressFormat.JPEG, 0, byteArrayOutputStreamObject3); 
      bitmap4.compress(Bitmap.CompressFormat.JPEG, 0, byteArrayOutputStreamObject4); 

      byte[] byteArrayVar1 = byteArrayOutputStreamObject1.toByteArray(); 

      ConvertImage1 = Base64.encodeToString(byteArrayVar1, Base64.DEFAULT); 
      byte[] byteArrayVar2 = byteArrayOutputStreamObject2.toByteArray(); 

      ConvertImage2 = Base64.encodeToString(byteArrayVar2, Base64.DEFAULT); 
      byte[] byteArrayVar3 = byteArrayOutputStreamObject3.toByteArray(); 

      ConvertImage3 = Base64.encodeToString(byteArrayVar3, Base64.DEFAULT); 
      byte[] byteArrayVar4 = byteArrayOutputStreamObject4.toByteArray(); 

      ConvertImage4 = Base64.encodeToString(byteArrayVar4, Base64.DEFAULT); 
} 
+2

画像をアップロードするには、マルチパートを使用する必要があります。 – Piyush

答えて

0

は、このライブラリを追加私のコードです。

new Thread(new Runnable() { 
        public void run() { 
         final JSONObject jsonObject = uploadImage(strImagePath); 
         if (jsonObject != null) { 
          runOnUiThread(new Runnable() { 
           @Override 
           public void run() { 

            Log.d(TAG, "Response : " + jsonObject.toString()); 

           } 
          }); 
         } 
        } 
       }).start(); 

public JSONObject uploadImage(String profileFileUri) { 
     try { 
      final MediaType MEDIA_TYPE_PNG = MediaType.parse("image/png"); 
      RequestBody r = null; 
      RequestBody k = null; 
      String extension = null; 
      String ext = null; 

      String userID = "1"; 

      if (profileFileUri != null) { 
       File sourceFile = new File(profileFileUri); 

       Log.d(TAG, "File...::::" + sourceFile + " : " + sourceFile.exists()); 

       final MediaType MEDIA_TYPE_JPG = MediaType.parse("image/jpg"); 
       final MediaType MEDIA_TYPE_JPEG = MediaType.parse("image/jpeg"); 
       final MediaType MEDIA_TYPE_GIF = MediaType.parse("image/gif"); 

       if (profileFileUri.contains(".jpg")) { 
        k = RequestBody.create(MEDIA_TYPE_JPG, sourceFile); 
        ext = ".jpg"; 
       } else if (profileFileUri.contains(".jpeg")) { 
        ext = ".jpeg"; 
        k = RequestBody.create(MEDIA_TYPE_JPEG, sourceFile); 
       } else if (profileFileUri.contains(".png")) { 
        ext = ".png"; 
        k = RequestBody.create(MEDIA_TYPE_PNG, sourceFile); 
       } else if (profileFileUri.contains(".gif")) { 
        ext = ".gif"; 
        k = RequestBody.create(MEDIA_TYPE_GIF, sourceFile); 
       } 
      } 
      ArrayList<String> imgList = new ArrayList<>(); 
      MultipartBody requestBody; 

      MultipartBody.Builder mRequestBody = new MultipartBody.Builder() 
        .setType(MultipartBody.FORM); 
      mRequestBody.addFormDataPart("Test", Consts.token_auth); 
      mRequestBody.addFormDataPart("proccess_id", "1"); 
      mRequestBody.addFormDataPart("img1", "IMG" + System.currentTimeMillis() + ext, k); 
      mRequestBody.addFormDataPart("img2", "IMG" + System.currentTimeMillis() + ext, k); 
      mRequestBody.addFormDataPart("img3", "IMG" + System.currentTimeMillis() + ext, k); 
      mRequestBody.addFormDataPart("img4", "IMG" + System.currentTimeMillis() + ext, k); 
      mRequestBody.addFormDataPart("img5", "IMG" + System.currentTimeMillis() + ext, k); 
      mRequestBody.addFormDataPart("if_shop_act", "yes"); 

      for (MediaPojo pojo : aryMedialist) { 

       mRequestBody.addFormDataPart("shop_act[]", pojo.getName().replace(" ", "_") + ".png", RequestBody.create(MEDIA_TYPE_PNG, new File(pojo.getPath()))); 
       imgList.add(pojo.getName()); 

       Log.v("ImageData", pojo.getName() + " - " + pojo.getPath()); 

      } 


      RequestBody rb = mRequestBody.build(); 

      Log.v("Test", android.text.TextUtils.join("|", imgList)); 

      Log.d(TAG, "uploadImage param : " + rb.toString()); 
      okhttp3.Request request = new okhttp3.Request.Builder() 
        .url("Your URL") 
        .post(rb) 
        .build(); 


      OkHttpClient client = new OkHttpClient(); 
      okhttp3.Response response = client.newCall(request).execute(); 

      String res = response.body().string(); 

      Log.d(TAG, "Response : " + res); 
      return new JSONObject(res); 

     } catch (UnknownHostException | UnsupportedEncodingException e) { 


      Log.e(TAG, "Error: " + e.getLocalizedMessage()); 
      e.printStackTrace(); 
     } catch (Exception e) { 


      Log.e(TAG, "Other Error: " + e.getLocalizedMessage()); 
      e.printStackTrace(); 
     } 

     return null; 
    } 

私はあなたに役立つことを願っています...!

0

asynctaskタスクを使用してイメージをアップロードしようとすると、すべての失敗の可能性を含む単一のイメージでも試みます。&イメージのサイズ/品質をチェックしてみてください。デバイスのRAM容量に応じてメモリ外のAndroidの動作は例外です。

関連する問題