在我的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
答案 0 :(得分:1)
不知道params.put()和params.add是否会导致更改多部分编码。
base64端口数据传输速度会慢30%,因为要传输的字节数增加30%。
你的质量是什么意思我不知道。上传图像的质量将相同,因为它们将与原始图像逐字节相同。