2016-09-03 6 views
0

ネットワークリクエストにOKhttpを使用しています。画像をサーバーにアップロードしようとしています。これは私が試した方法ですが、動作しません。私は間違って何をしていますか?okhttpを使用して画像をサーバにアップロード

client = new OkHttpClient.Builder() 
       .build(); 

     ByteArrayOutputStream stream = new ByteArrayOutputStream(); 
     bitmap.compress(Bitmap.CompressFormat.JPEG, 100, stream); 
     byte[] byteArray = stream.toByteArray(); 
     String encodedImage = Base64.encodeToString(byteArray, Base64.DEFAULT); 

     RequestBody requestBody = new MultipartBody.Builder() 
       .setType(MultipartBody.FORM) 
       .addFormDataPart("", "", 
         RequestBody.create(MediaType.parse("image/*"), encodedImage)) 
       .build(); 

     Request request = new Request.Builder() 
       .url(serverUrl) 
       .post(requestBody) 
       .build(); 

     client.newCall(request).enqueue(new Callback() { 
      @Override 
      public void onFailure(Call call, IOException e) { 

      } 

      @Override 
      public void onResponse(Call call, Response response) throws IOException { 

      } 
     }); 
    } 
+0

を「しかし、それは動作していない」:どのようにそれは「動作しない」のか?クラッシュ?接続なし?より詳細にする必要があります。クラッシュした場合はlogcatを追加してください – Zoe

+0

もっと速く処理しようとしている場合は、代わりに[Volley](https://developer.android.com/training/volley/index.html)を使用してください。本当に助けを求めたいのであれば、logcatのような詳細を記入してください。 – tpk

+0

なぜ画像をbase64でエンコードしていますか? –

答えて

0

あなただけbyteArrayを使用して、画像データをbase64エンコードする必要はありません。

.addFormDataPart("image", "filename.jpg", 
       RequestBody.create(MediaType.parse("image/*jpg"), byteArray)) 
関連する問題