凌空发送空图像

时间:2018-12-21 06:55:03

标签: android android-volley

onActivityResult:

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (requestCode == REQUEST_CAPTURE_IMAGE && resultCode == RESULT_OK) {
        bitmapFrontIC = (Bitmap) data.getExtras().get("data");
        frontICImageView.setImageBitmap(bitmapFrontIC);
    }else if(requestCode == REQUEST_CAPTURE_BACKIC && resultCode == RESULT_OK){
        bitmapBackIC = (Bitmap) data.getExtras().get("data");
        backICImageView.setImageBitmap(bitmapBackIC);
    }
}

submitbuttonOnClick:

public void submitOnClick(View view){
    Log.d("Submit clicked", "Submit Clicked");
    if(icNumber.getText().toString().length() > 0 && bitmapFrontIC != null && bitmapBackIC != null){
        uploadBitmap(bitmapFrontIC,bitmapBackIC);
    }else{
        Toast.makeText(getApplicationContext(), "Please fill up all the fields", Toast.LENGTH_SHORT).show();
    }
}

GetFileDataFromDrawable:

public byte[] getFileDataFromDrawable(Bitmap bitmap) {
    ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
    bitmap.compress(Bitmap.CompressFormat.JPEG, 100, byteArrayOutputStream);
    return byteArrayOutputStream.toByteArray();
}

uploadBitMap:

private void uploadBitmap(final Bitmap bitmapFrontIC, final Bitmap bitmapBackIC) {
    //our custom volley request
    VolleyMultipartRequest volleyMultipartRequest = new VolleyMultipartRequest(Request.Method.POST, Constants.API_URL + "/users/upload-ic",
            new Response.Listener<NetworkResponse>() {
                @Override
                public void onResponse(NetworkResponse response) {
                    loading.dismiss();
                    try {
                        JSONObject obj = new JSONObject(new String(response.data));
                        Toast.makeText(getApplicationContext(), obj.getString("message"), Toast.LENGTH_SHORT).show();
                    } catch (JSONException e) {
                        e.printStackTrace();
                    }
                }
            },
            new Response.ErrorListener() {
                @Override
                public void onErrorResponse(VolleyError error) {
                    loading.dismiss();
                    error.printStackTrace();
                    NetworkResponse networkResponse = error.networkResponse;
                    if (networkResponse != null && networkResponse.data != null) {
                        String errorResponse = new String(networkResponse.data);
                        try {
                            JSONObject errorObject = new JSONObject(errorResponse);
                            if(errorObject.has("error")){
                                Toast.makeText(ICVerificationActivity.this, errorObject.getString("message"),
                                        Toast.LENGTH_LONG).show();
                            }
                        } catch (JSONException e) {
                            e.printStackTrace();
                        }
                        // Print Error!
                        Log.d("JSON ERROR", errorResponse);
                    }
                }
            }) {

        /*
         * If you want to add more parameters with the image
         * you can do it here
         * here we have only one parameter with the image
         * which is tags
         * */
        @Override
        protected Map<String, String> getParams() throws AuthFailureError {
            Map<String, String> params = new HashMap<>();
            params.put("icno", icNumber.getText().toString());
            return params;
        }

        @Override
        public Map<String, String> getHeaders() throws AuthFailureError {
            HashMap<String, String> headers = new HashMap<String, String>();
            headers.put("Content-Type", "multipart/form-data");
            headers.put("Authorization", "Bearer " + "abcd");
            return headers;
        }
        /*
         * Here we are passing image by renaming it with a unique name
         * */
        @Override
        protected Map<String, DataPart> getByteData() {
            Map<String, DataPart> params = new HashMap<>();
            long imageName = System.currentTimeMillis();
            params.put("icFront", new DataPart("FrontIC_" + imageName + ".png", getFileDataFromDrawable(bitmapFrontIC)));
            params.put("icBack", new DataPart("BackIC_"+imageName + ".png", getFileDataFromDrawable(bitmapBackIC)));
            return params;
        }
    };

    //adding the request to volley
    Volley.newRequestQueue(this).add(volleyMultipartRequest);
    loading.show();
}

我试图通过向正文输入三个项目来调用POST请求: a)文字 b)camera_image1 c)camera_image2

我能够在imageview中显示从相机捕获的图像,这意味着位图正在工作。但是,当我要上传到服务器时,服务器返回的图像为空。我做错了吗?

0 个答案:

没有答案