Ошибка загрузки растрового изображения с помощью AsyncHttpclient

Я пытаюсь отправить растровое изображение (изображение, снятое камерой - Android) на nodejs. Я использую AsycnHttpClient для того же. Я могу успешно отправить параметры запроса. Я ссылался на некоторые ссылки, по которым файлы отправляются и принимаются. Я пробовал то же самое, однако, я думаю, код nodejs должен отличаться для растрового изображения и файла (не уверен?!)

Пожалуйста, вы можете помочь?

Код на стороне клиента:

private void storeImage(Bitmap bm){
        AsyncHttpClient client = new AsyncHttpClient();
        //Append the parameters in the Service URL
        RequestParams rp = new RequestParams();
        String SERVICE_URL_REG = SERVICE_URL + "uploadImage?userID=rhari008";
        ByteArrayOutputStream bos = new ByteArrayOutputStream();
        bm.compress(Bitmap.CompressFormat.JPEG, 100, bos);
        byte[] data = bos.toByteArray();
        ByteArrayInputStream bInput = new ByteArrayInputStream(data);
        rp.put("image",bInput);
        client.post(SERVICE_URL_REG, rp, new AsyncHttpResponseHandler() {
            @Override
            public void onSuccess(int statusCode, Header[] headers, byte[] responseBody) {
                Log.d(TAG,"Successfully uploaded the image");
            }

            @Override
            public void onFailure(int statusCode, Header[] headers, byte[] responseBody, Throwable error) {
                Log.d(TAG,"Error in uploading the image");
            }
        });
    }

Код на стороне сервера для получения параметра:

//Image upload
router.post('/uploadImage', function(req, res, next) {
   console.log("Image upload reached for " + req.query.userID);
   var file = req.files.image;
   console.log("File received : ");
   //console.log("Image path : "+req.files.image.path);
   res.json({result:"success"});
});

person Hariprasauth Ramamoorthy    schedule 17.10.2016    source источник
comment
Интересно, почему вы возитесь с растровым изображением, если все, что вам нужно, это загрузить файл. Загрузите этот файл!   -  person greenapps    schedule 17.10.2016
comment
Как уже упоминалось, это фотография, снятая с камеры. Отсюда битмап. Может ли это быть проблемой?   -  person Hariprasauth Ramamoorthy    schedule 17.10.2016
comment
Извините, но я отрицаю «следовательно». Если вы сделаете снимок с помощью приложения камеры, приложение создаст файл. Битмап не задействован. За исключением растрового изображения миниатюры, зависящего от используемого намерения. Пожалуйста, будьте ясны. Что ты делаешь?   -  person greenapps    schedule 17.10.2016


Ответы (2)


Сначала убедитесь, что ваш сервер NodeJS поддерживает multipart.

person Darcy    schedule 18.10.2016

Да .. Наконец-то я смог прийти к решению. Я закодировал растровое изображение в base64, чтобы сделать то же самое. Это было сохранено после сжатия. Я извлек его на основе и декодировал то же самое в растровое изображение. Это сработало.

person Hariprasauth Ramamoorthy    schedule 18.10.2016