Ошибка при отправке изображения на сервер в Интернете с помощью Volley - PullRequest
0 голосов
/ 10 октября 2019

У меня проблема с попыткой отправить файл на сервер, моя проблема в том, что иногда файл отправляется, а иногда нет, я пытаюсь отправить изображение и некоторые данные, изображение будет загружено напапка на сервере и данные в BD, проблема в том, что я не знаю, почему иногда, если изображение отправлено и сохранено правильно, а иногда оно ничего не отправляет и выдает ошибку 406, я незнаю, это потому что изображения, которые я посылаю, очень тяжелые или в чем может быть проблема

Я пытался сжать растровое изображение, которое я отправил, используя PNG или WEBP, но у меня не получилось ни одного, сервер работает нормально

Это код, который я использую для создания своего растрового изображения:

public String getStringImagen(Bitmap bit){
        ByteArrayOutputStream baos = new ByteArrayOutputStream();
        bit.compress(Bitmap.CompressFormat.JPEG, 98, baos);
        byte[] imagenBytes = baos.toByteArray();
        String encodeImagen = Base64.encodeToString(imagenBytes, Base64.DEFAULT);
        imagenCodificada = encodeImagen;
        return encodeImagen;
    }

И это мой метод, когда вы отправляете все на сервер:

public void enviarRegistro(){
        final ProgressDialog cargando = ProgressDialog.show(this, "Enviando solicitud", "Espere por favor");

            StringRequest stringRequest = new StringRequest(Request.Method.POST, UPLOAD_URL, new Response.Listener<String>() {
                @Override
                public void onResponse(String response) {
                    cargando.dismiss();
                    Toast.makeText(DatosBancarios.this, response, Toast.LENGTH_LONG).show();
                    Log.i("CONEXION", response);
                }
            }, new Response.ErrorListener() {
                @Override
                public void onErrorResponse(VolleyError error) {
                    cargando.dismiss();
                    Toast.makeText(DatosBancarios.this, "Ha ocurrido un error: "+error.getMessage(), Toast.LENGTH_LONG).show();
                }
            }){
                protected Map<String, String> getParams() throws AuthFailureError {
                    String imagen = getStringImagen(bitmap);;
                    String rutaFinalImagen = "http://www.servidor.mx/codigo/img/"+nombre_imagen+".png";
                    Log.i("HIDEOESP","La foto es: "+imagen);
                    Log.i("HIDEOESP","El nombre de la foto es: "+nombre_imagen);
                    //Imprimimos la fecha
                    SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd_HH:mm:ss");
                    String currentDateandTime = sdf.format(new Date());
                    Log.i("FECHA", currentDateandTime);

                    Map<String, String> params = new Hashtable<String, String>();

                    //Parametros de la imagen
                    params.put(KEY_IMAGE, getStringImagen(bitmap));
                    params.put(KEY_NOMBRE, nombre_imagen);

                    //Primer bloque
                    params.put(KEY_NOMBReUSU, nombreUsuario);
                    params.put(KEY_APELLIDOUSU, apellidoPUsuario);
                    params.put(KEY_APELLIDOUSUM, apellidoMUsuario);
                    params.put(KEY_NUMEROE, numeroEUsuario);
                    params.put(KEY_FECHA, fechaNUsuario);
                    params.put(KEY_USUARIO, rfcUsuario);
                    params.put(KEY_TEL, telefonoCUsuario);
                    params.put(KEY_CEL, celularUsuario);
                    params.put(KEY_EMAIL, emailUsuario);
                    params.put(KEY_NOMBREIMG, nombre_imagen);
                    params.put(KEY_RUTA, rutaFinalImagen);
                    //Seundo bloque
                    params.put(KEY_CLAVEUNO, beneficiarioBloqueUno);
                    params.put(KEY_CLAVEDOS, beneficiarioBloqueDos);
                    params.put(KEY_CLAVETRES, beneficiarioBloqueTres);
                    params.put(KEY_CLAVECUATRO, beneficiarioBloqueCuatro);
                    //Tercer bloque
                    if(ahorroFinal.getText().toString().equals("")){
                        params.put(KEY_NOMFINAL, "No aplica");
                        params.put(KEY_TITULO, "No aplica");
                        params.put(KEY_FIRMA, "No aplica");
                        params.put(KEY_FECHA, "No aplica");
                        params.put(KEY_DATOSPERSONALES, "No aplica");
                    }else{
                        params.put(KEY_NOMFINAL, KEY_NOMFINAL.getText().toString());
                        params.put(KEY_TITULO, KEY_TITULO.getText().toString());
                        if(KEY_FIRMA== null){
                            params.put(KEY_FIRMA, KEY_FIRMA.getText().toString());
                        }else{
                            params.put(KEY_DATOSPERSONALES, datoTarjeta);
                        }
                        params.put(KEY_FECHA, KEY_FECHA.getText().toString());
                        params.put(KEY_DATOSPERSONALES, KEY_DATOSPERSONALES.getText().toString());
                    }
                    //Tercer bloque dos
                    if(clabeBanco.getText().toString().equals("")){
                        params.put(KEY_B, "No aplica");
                        params.put(KEY_C, "No aplica");
                    }else{
                        params.put(KEY_B, "No aplica");
                        params.put(KEY_C, "No aplica");
                    }


                    return params;
                }
            };

            RequestQueue requestQueue = Volley.newRequestQueue(this);
            requestQueue.add(stringRequest);

            Intent intent = new Intent(getApplicationContext(), RegistroFinal.class);
            startActivity(intent);
    }

Ошибка, которая печатаетмне в консоли ошибка 406 в пути моего сервера http: //server/project/file.php

...