android:上传图片到服务器,base64encoded或multipart / form-data?

时间:2015-03-27 19:20:28

标签: android base64 image-uploading multipartform-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-发送为字符串(因此它将是base64encoded)

   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

所以我的问题是:

哪一个更好,因为速度更高的质量

有什么区别?

注意:

我已经阅读了很多类似问题的答案,但实际上没有人回答这个问题,例如This One

1 个答案:

答案 0 :(得分:1)

不知道params.put()和params.add是否会导致更改多部分编码。

base64端口数据传输速度会慢30%,因为要传输的字节数增加30%。

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