2016-04-01 2 views
2

私は、マルチパートを使って複数の画像(この場合は10以上)をサーバーにアップロードするためにokHttpを使用しています。 私と私の友人は議論を持ちました、私はすべての画像を1回のリクエストでアップロードすると言っています。 前の画像がアップロードされたら、一度に1つのリクエストを送信すると言っています。 これは正しいことです。そのため、サーバーは高速で動作し、タイムアウトは発生しません。複数の画像をサーバーにアップロードするにはどうすればいいですか

+0

を一度にすべてのイメージをサーバーに送信し、バックグラウンドのスレッドでそれを行うことを確認します。一度に1つのイメージを送信することは、一度にすべてのイメージを送信することが良い方法であるということを意味しないサーバーに送信するバルクイメージがある場合、悪い考えです。それはあなたが5のグループでそれを送信する方が良いです – Jois

+0

@ジョイスkkしかし、あなたはどのように複数の仕事を教えてくれますか?イメージを1つずつ送信するのか、それともリクエストが失敗するのか、最後に正常に送信されたイメージを取得する方法はありますか? – Rookie

+0

あなたはどのライブラリを使用していますか? – Jois

答えて

1

あなたは以下のようにBase64形式(文字列)を送信し、

/** 
    * Encodes the image to Base64. 
    */ 
    private String encodeImage(String photoPath) { 

     File imagefile = new File(photoPath); 
     FileInputStream fis = null; 
     try { 
      fis = new FileInputStream(imagefile); 
     } catch (FileNotFoundException e) { 
      e.printStackTrace(); 
     } 

     Bitmap bm = BitmapFactory.decodeStream(fis); 
     ByteArrayOutputStream baos = new ByteArrayOutputStream(); 
     bm.compress(Bitmap.CompressFormat.JPEG, 80, baos); 
     byte[] b = baos.toByteArray(); 
     return Base64.encodeToString(b, Base64.DEFAULT); 
    } 

を文字列として符号化されたすべての写真が含まれている1つのテキストファイルを作成し、ファイルをアップロードするためにMultipartUtilityを使用することができます。あなたの場合

https://github.com/cloudinary/cloudinary_android/blob/master/Cloudinary/src/com/cloudinary/MultipartUtility.java

+1

Base64エンコーディングは、ファイルサイズを約33%増加させます。だから私はそれが良い方法だとは思わない。 – Rookie

+1

あなたはGzip ritできますか? –

+0

マルチパートリクエストまたはエンコードされた文字列として送信する方が良いですか? – Rookie