Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/183.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android-向服务器发送图像会产生巨大的HTTP请求_Android_Imageview_Base64_Multipart_Okhttp - Fatal编程技术网

Android-向服务器发送图像会产生巨大的HTTP请求

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

我当前正在通过将图像编码为base64字符串向服务器发送图像,如下所示:

但是,当我查看HTTP POST请求时,我看到如下内容:

{"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。。谢谢