source

WP API v1 및 v2에서 Android Loopj 이미지 업로드가 중단됨

factcode 2023. 3. 5. 21:59
반응형

WP API v1 및 v2에서 Android Loopj 이미지 업로드가 중단됨

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 @인데, 자바에서는 어떻게 해야 하는지 모르겠어요.

당신의 이미지가 제대로 첨부되지 않은 것 같습니다. 우체부에게 아래 스크린샷을 확인해 주세요.

언급URL : https://stackoverflow.com/questions/34243980/android-loopj-image-upload-broken-with-wp-api-v1-v2

반응형