2016-10-27 21 views
4

画像をアップロードしようとしているサーバがファイルの配列を待っています。どこでもインターネット上で彼らが怒鳴る私のコードとして、複数のaddFormDataPartを使用します。OkHTTPを使用して画像の配列をアップロードします。

final OkHttpClient client = new OkHttpClient(); 
      MediaType MEDIA_TYPE_PNG; 

      MultipartBody.Builder buildernew = new MultipartBody.Builder().setType(MultipartBody.FORM); 
      for (Image image : media) { 
       MEDIA_TYPE_PNG = image.getName().endsWith("png") ? MediaType.parse("image/png") : MediaType.parse("image/jpeg"); 
       RequestBody imageBody = RequestBody.create(MEDIA_TYPE_PNG, image.getPath()); 
       buildernew.addFormDataPart("file", image.getName(), imageBody); 
      } 
      MultipartBody requestBody = buildernew.build(); 
      final Request request = new Request.Builder() 
        .addHeader("authorization", "Bearer " + Credentials.getAuthToken(mContext)) 
        .url(url) 
        .post(requestBody) 
        .build(); 
      Thread thread = new Thread(new Runnable() { 
       @Override 
       public void run() { 
        try { 
         Response response = client.newCall(request).execute(); 
         if (response.message().contentEquals("OK") && response.code() == 200) { 
          System.out.println(response.body().string()); 
         } 
         System.out.println(response.body().string()); 
        } catch (Exception e) { 
         Log.e(TAG, e.getMessage()); 
        } 
       } 
      }); 
      thread.start(); 

問題は、それが「ファイル」をチェックし、最後の1がかかるため、データが配列でないため、サーバーは最後のものだけを受信することです。サーバは、この方法でデータを期待する:

{ "file" : [Files] } 

答えて

2

私の推測では、サーバーが1画像の配列を期待して、単一の(最後の)ではないので、あなたがfile[]にマルチパートデータフィールドの名前を変更する必要があるということです。

buildernew.addFormDataPart("file[]", image.getName(), imageBody); 
+0

どうもありがとうございます :) – charbinary

関連する問題