Загрузка изображения Android Loopj не работает с WP API v1 и v2

Я использую Loopj для загрузки файлов на свой сайт WordPress и WP REST API v1 и/или v2 (те же результаты).

Аутентификация проходит отлично, заголовки идут отлично, файл "загружается", но когда я проверяю это в своем бэкэнде WordPress... изображение или файл повреждены.

Часть Android выглядит так:

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();
             }

Но изображение... выглядит так в моем бэкенде WordPress:

Изображение повреждено

Кто-нибудь знает, почему это происходит? Мой файл и путь к файлу идеальны. Я могу получить изображение и показать его на своем телефоне, прежде чем загружать его.

РЕДАКТИРОВАТЬ: этот cURL отлично работает

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

Основное отличие заключается в --data-binary @, но я не знаю, как это сделать в Java.


person Mariano Zorrilla    schedule 12.12.2015    source источник
comment
привет я столкнулся с той же проблемой здесь .... вы решили это?   -  person Sangharsha    schedule 24.01.2016
comment
Пока нет :( Я слежу за проектом github, чтобы узнать, решит ли кто-нибудь это.   -  person Mariano Zorrilla    schedule 24.01.2016
comment
эй, если вы решите проблему, пожалуйста, напишите решение.... :)   -  person Sangharsha    schedule 30.01.2016
comment
Пожалуйста, проверьте, загружается ли файл и поврежден ли он из браузера, возможно, изображение не прикреплено должным образом. Также попробуйте другое изображение в другом формате - у меня была аналогичная проблема, когда мне пришлось повторно сохранять изображения в фотошопе, чтобы WordPress не думал, что изображение повреждено, например. если изображение было неправильно преобразовано в другой формат.   -  person SergeDirect    schedule 24.08.2016


Ответы (1)


Я думаю, что ваше изображение не прикреплено должным образом. Пожалуйста, свяжитесь с почтальоном, проверьте мой скриншот ниже введите здесь описание изображения введите здесь описание изображения

person Anand Choudhary    schedule 04.05.2018