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%。
我不知道你所说的质量是什么意思。上传图像的质量将是相同的,因为它们逐字节与原始图像相同。
在我的 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%。
我不知道你所说的质量是什么意思。上传图像的质量将是相同的,因为它们逐字节与原始图像相同。