Android-向服务器发送图像会产生巨大的HTTP请求
我当前正在通过将图像编码为base64字符串向服务器发送图像,如下所示: 但是,当我查看HTTP POST请求时,我看到如下内容:Android-向服务器发送图像会产生巨大的HTTP请求,android,imageview,base64,multipart,okhttp,Android,Imageview,Base64,Multipart,Okhttp,我当前正在通过将图像编码为base64字符串向服务器发送图像,如下所示: 但是,当我查看HTTP POST请求时,我看到如下内容: {"login"=>"Jerem", "mobile_upload_file"=>"data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB\nAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQE
{"login"=>"Jerem", "mobile_upload_file"=>"data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB\nAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQH/2wBDAQEBAQEBAQEBAQEBAQEBAQEBAQEB\nAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQH/wAARCAQ4BDgDASIA\nAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQA\nAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3\nODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWm\np6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEA\nAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3....................................}
这种情况持续了一段时间(大约100万个字符),似乎使我的服务器滞后
我想知道这是否是一个正常的行为,看到那么多的字符发送?如果没有,我应该如何实现向服务器发送图像的过程
感谢您的帮助您可以像这样通过多部分实体在FileBody中发送图像
public String sendMultipartRequestToServer(BusinessDataObject dataObject,String url) {
String responseString=null;
HttpResponse response;
HttpClient client=new DefaultHttpClient();
HttpPost post=new HttpPost(url);
HttpConnectionParams.setConnectionTimeout(client.getParams(),50000);
MultipartEntity multipartEntity=new MultipartEntity(HttpMultipartMode.BROWSER_COMPATIBLE);
try {
multipartEntity.addPart(KEY_EMAIL,new StringBody(dataObject.getEmail()));
multipartEntity.addPart(KEY_PASSWORD, new StringBody(dataObject.getPassword()));
multipartEntity.addPart(KEY_IMAGE,new FileBody(new File(Here your image path on your memory)));
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
//Setting parameter to post method
post.setEntity(multipartEntity);
try {
response=client.execute(post);
InputStream inputStream=response.getEntity().getContent();
responseString=convertStreamToString(inputStream);
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return responseString;
}
如果找不到类MultipartEntity,则必须在项目中添加httpime.jar。这是迄今为止发送图像的最佳方式,我知道这里不需要在Base64中转换图像。您只需将所选图像的url传递给FileBody即可。只需按原样发送图像即可。Base64编码使字节数增加30%。不要使用json上传图像。所谓“按原样”是指以字节数组的形式发送图像?基本上发送的结果是:byte[]bytes=fileToByteArray(file.getPath())?您能给我举个例子吗?您也要更改服务器上的软件吗?MultipartEntity和DefaultHttpClient现在都不推荐使用。我想你可以先把它转换过来。好吧,然后我必须找到其他方法。但是我在我的代码中使用了Multipart,所以我推荐它。我想现在可以使用HttpUrlConnection和MultiPartEntityBuilder了。转换你的代码不会花费太多时间。是的,我得到了HttpUrlConnection,并将了解MultiPartEntityBuilder。。谢谢