android :上传图片到服务器,base64编码还是multipart/form-data?

android :uploading image to server , base64encoded or multipart/form-data?

在我的 android 应用程序中,用户可以上传 300kb 的图片;

我将使用 This ( Android Asynchronous Http Client ) ,我认为它很棒,Whatsapp 也是它的用户之一。

在这个库中,我可以使用 RequestParams(我认为它是由 apache 提供的),并向其中添加一个文件或一个字符串(还有很多其他的)。

这里是:

1- 添加一个文件,这是我的图像(我认为是 multipart/form-data)

   RequestParams params = new RequestParams();
   String contentType = RequestParams.APPLICATION_OCTET_STREAM;
   params.put("my_image", new File(image_file_path), contentType); // here I added my Imagefile direcyly without base64ing it.
   .
   .
   .
   client.post(url, params, responseHandler);

2- 以字符串形式发送(所以它会被 base64 编码)

   File fileName = new File(image_file_path);
   InputStream inputStream = new FileInputStream(fileName);
   byte[] bytes;
   byte[] buffer = new byte[8192];
   int bytesRead;
   ByteArrayOutputStream output = new ByteArrayOutputStream();
   try {
       while ((bytesRead = inputStream.read(buffer)) != -1) {
       output.write(buffer, 0, bytesRead);
   }
   } catch (IOException e) {
   e.printStackTrace();
   }
   bytes = output.toByteArray();
   String encoded_image = Base64.encodeToString(bytes, Base64.DEFAULT);

   // then add it to params : 

   params.add("my_image",encoded_image);

  // And the rest is the same as above

所以我的问题是:

速度更高质量哪个更好?

有什么区别?

注意:

我读过很多类似问题的答案,但其中 none 确实回答了这个问题,例如 This One

不知道 params.put() 和 params.add 是否会导致多部分编码发生变化。

base64 编码的数据传输速度会慢 30%,因为要传输的字节要多 30%。

我不知道你所说的质量是什么意思。上传图像的质量将是相同的,因为它们逐字节与原始图像相同。