Php 从android上传到服务器时,Base64编码图像被切断

Php 从android上传到服务器时,Base64编码图像被切断,php,android,android-volley,slim,Php,Android,Android Volley,Slim,使用put-volley请求将base64编码的图像发送到运行php/slim的服务器时遇到一些问题 当我在发送数据之前输出数据时,它看起来不错,但一旦我在服务器上得到它,数据就被破坏/剪切了 我发送图像的Android代码如下所示: private void updateImage(Bitmap myImage) { String tag_string_req = "req_updateimage"; String updateUrl = String.format(API_

使用put-volley请求将base64编码的图像发送到运行php/slim的服务器时遇到一些问题

当我在发送数据之前输出数据时,它看起来不错,但一旦我在服务器上得到它,数据就被破坏/剪切了

我发送图像的Android代码如下所示:

private void updateImage(Bitmap myImage) {
    String tag_string_req = "req_updateimage";

    String updateUrl = String.format(API_DOMAIN + AppConfig.URL_UPDATE_IMAGE);
    StringRequest strReq = new StringRequest(Request.Method.PUT, updateUrl, new Response.Listener<String>() {
        @Override
        public void onResponse(String response) {

            try {
                //do some stuff
            } catch (JSONException e) {
                e.printStackTrace();
            }
        }

    }, new Response.ErrorListener() {

        @Override
        public void onErrorResponse(VolleyError error) {
            Log.e(TAG, "Error: " + error.getMessage());
        }

    }){

        @Override
        protected Map<String, String> getParams() {
            Map<String, String> params = new HashMap<String, String>();
            params.put("Content-Type", "application/json; charset=UTF-8");

            ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
            myImage.compress(Bitmap.CompressFormat.JPEG, 100, byteArrayOutputStream);
            byte[] byteArray = byteArrayOutputStream.toByteArray();
            String base64Image = Base64.encodeToString(byteArray, Base64.DEFAULT);
            params.put("image", base64Image);

            System.out.println(params);
            return params;
        }
    };

    AppController.getInstance().addToRequestQueue(strReq, tag_string_req);
}
我的android函数中的输出看起来像一个正确的base64编码图像。 在我的服务器上,只有大约30%的图像。你能帮助我吗?我的臭虫在哪里?怎么了

提前感谢,


RiPr

看起来您没有设置正确的内容类型

在Java代码中

参数put(“内容类型”,“应用程序/json;字符集=UTF-8”)

这会告诉你的slim应用程序你试图发送的数据是application/json格式的。。。事实并非如此


尝试更改编码以匹配您发送的数据结构。

从php中增加post最大数据大小。初始化图像大小介于40kb和最大100kb之间。默认的post max数据大小约为20M,对吗?我想这并不能解决我的问题。你们的图像被更改为字符串,我的意思是在base64中,所以可能会引起问题。所以,尝试使用multiplepart将图像上载到服务器。快速有效地解决问题,使用CURL或Postman将数据放到服务器上,看看是否有效。如果是这样的话,那么Android代码就有问题了。内容编码在两端都是一样的吗?好吧,如果我把base64编码的图像作为attr的值放在这个json中,为什么它不是json格式呢?JSON看起来(在本例中)类似于
{“image”:“HERECOMESMYBASE64ENCODEDIMAGEANDSOON”}
$app->put('/image', function() use ($app){
    $image = $app->request->put('image');
    $response['error'] = false;
    $response['image'] = $image;
    echoResponse(200, $response);
});