Carga de imagen de Android Loopj interrumpida con WP API v1 y v2

2 minutos de lectura

avatar de usuario
mariano zorrilla

Estoy usando Loopj para cargar archivos en mi sitio de WordPress y WP REST API v1 y/o v2 (mismos resultados).

Las autenticaciones van muy bien, los encabezados van muy bien, el archivo se “carga”, pero cuando lo reviso en mi backend de WordPress… la imagen o el archivo está roto.

La parte de Android es así:

File myFile = new File(finalpath);

String name = Utils.getLastBitFromUrl(finalpath);

String extension = Utils.getFileExtention(finalpath);

client.setBasicAuth("myusername", "mypassword", new AuthScope("mywebsite.com", 80, AuthScope.ANY_REALM));

     client.addHeader("Content-Disposition", "filename=" + name);
     client.addHeader("Content-Type", "image/" + extension);

     try {
        params.put("data", myFile);
     } catch (FileNotFoundException e) {
           e.printStackTrace();
     }
     // or: http://mywebsite.com/wp-json/wp/v2/media for v2
     client.post("http://mywebsite.com/wp-json/media", params, new AsyncHttpResponseHandler() {

          int count = 0;

          @Override
          public void onStart() {
            prgDialog = new ProgressDialog(MainActivity.this);
            prgDialog.setMessage("Uploading Image...");
            prgDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
            prgDialog.setMax(100);
            prgDialog.show();
          }

          @Override
          public void onProgress(long bytesWritten, long totalSize) {

              if(count < 1){
                 count++;
                 Log.d("size", "" + Utils.formatFileSize(totalSize));
              }

          long progressPercentage = (long)100*bytesWritten/totalSize;

          if(progressPercentage <= 100) {
              prgDialog.setProgress((int) progressPercentage);
            }
          }

          @Override
          public void onSuccess(int statuscode, Header[] headers, byte[] response) {
             try {
               prgDialog.dismiss();
               JSONObject obj = new JSONObject(Utils.decodeUTF8(response));

               Log.e("success!", Utils.decodeUTF8(response));

             } catch (JSONException e) {
                 e.printStackTrace();
             }

Pero la imagen… se ve así en mi backend de WordPress:

Imagen rota

¿Alguien tiene alguna idea de por qué sucede esto? Mi archivo y la ruta del archivo son perfectos. Puedo obtener la imagen y mostrarla en mi teléfono antes de subirla.

EDITAR: Este cURL funciona perfecto

curl -i -X POST -H "Content-Disposition:filename=test.png" --data-binary @"/home/my-name/Downloads/example.png" -d title="test" -u username:password -H "Expect:" http://my.website.com/wp-json/wp/v2/media

La principal diferencia es –data-binary @ pero no sé cómo hacerlo en Java.

  • hola, estoy enfrentando el mismo problema aquí … ¿has resuelto esto?

    – Sangharsha

    24 de enero de 2016 a las 10:58

  • Todavía no 🙁 Estoy siguiendo el proyecto github para ver si alguien resuelve esto.

    –Mariano Zorrilla

    24 de enero de 2016 a las 17:32

  • Oye, si resuelves el problema, publica la solución…. 🙂

    – Sangharsha

    30 de enero de 2016 a las 14:38

  • Verifique si el archivo se puede cargar y está roto desde el navegador, podría ser que la imagen no se adjunte correctamente. También intente con otra imagen con un formato diferente: tuve un problema similar, cuando tuve que volver a guardar las imágenes en Photoshop para evitar que WordPress pensara que la imagen está rota, por ejemplo, si la imagen se convirtió a un formato diferente de manera incorrecta.

    – Serge Direct

    23 de agosto de 2016 a las 22:45

Creo que su imagen no se adjuntó correctamente. Consulte con el cartero, consulte mi captura de pantalla a continuación. ingrese la descripción de la imagen aquí
ingrese la descripción de la imagen aquí

¿Ha sido útil esta solución?