2016-04-01 42 views
2

我使用okHttp上傳多個圖像(在這種情況下超過10)到服務器使用multipartbody。 我和我的朋友發生了爭執,我說要在一個請求中上傳所有圖片。 他說一次發送一個請求,一旦上一個圖像上傳上傳下一個。 這是正確的做法,所以服務器運行速度快,沒​​有超時發生。這是上傳多個圖像到服務器的最佳方式android

+0

,如果你希望一次將所有圖像發送到服務器,然後確保您在後臺線程中執行此操作。一次只發送一個圖像是一個壞主意,如果你有批量圖像發送到服務器,那並不意味着一次發送所有圖像是一個好習慣。你最好把它寄給一個5人左右的小組 – Jois

+0

@Jois kk,但你能告訴我如何多部分工作?它會逐一發送圖像,還是請求失敗,有沒有辦法獲取上次成功發送的圖像? – 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); 
    } 

一個文本文件,並使用MultipartUtility上傳文件:

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

+1

Base64編碼增加了約33%的文件大小。所以我不認爲它是一個好方法。 – Rookie

+1

爲你可以Gzip rit? –

+0

哪一個更適合作爲多部分請求中的文件發送或以編碼字符串的形式發送? – Rookie

相關問題