개조 된 이미지를 서버에 업로드 할 수 없습니다.

WHO

개조를 통해 이미지를 서버로 보내는 방법에 대한 문제를 다루고 있습니다. 서버는 내가 보낸 것을 검색 할 수 있지만 우편 배달부에서 시도하면 원하지 않는 것을 표시합니다. 먼저 내 데이터를 보여줍니다.

이것은 MyProfileActivity.java입니다.

Oncreate에서 나는 이것을 넣었습니다.

    HttpLoggingInterceptor interceptor = new HttpLoggingInterceptor();
    interceptor.setLevel(HttpLoggingInterceptor.Level.BODY);
    OkHttpClient client = new OkHttpClient.Builder().addInterceptor(interceptor).build();
    service = new Retrofit.Builder().baseUrl("http://lfapp.learnflux.net/v1/").client(client).build().create(com.idesolusiasia.learnflux.Service.class);

User 버튼을 클릭하여 이미지를 선택하고 아래와 같이 서버로 보냅니다.

            Intent intent = new Intent();
            intent.setType("image/*");
            intent.setAction(Intent.ACTION_GET_CONTENT);
            startActivityForResult(Intent.createChooser(intent, "Select Image"), PICK_IMAGE);

내 활동 결과

if (requestCode == PICK_IMAGE && resultCode == Activity.RESULT_OK) {

        Uri selectedImage = data.getData();
        String path = getRealPathFromUri(selectedImage);
        File file = new File(path);


        RequestBody reqFile = RequestBody.create(MediaType.parse("application/image"), file);
        MultipartBody.Part body = MultipartBody.Part.createFormData("upload", file.getName(), reqFile);
        String token = "Bearer " + User.getUser().getAccess_token();
        Log.d("THIS", data.getData().getPath());

        retrofit2.Call<okhttp3.ResponseBody> req = service.putImage(token ,body);
        req.enqueue(new Callback<ResponseBody>() {
            @Override
            public void onResponse(Call<ResponseBody> call, retrofit2.Response<ResponseBody> response) {
                        Toast.makeText(getApplicationContext(), "Success", Toast.LENGTH_SHORT).show();
            }

            @Override
            public void onFailure(Call<ResponseBody> call, Throwable t) {
                t.printStackTrace();
            }
        });
    }

또한 아래에서 TheRealPath를 얻습니다.

public String getRealPathFromUri(final Uri uri) {
    // DocumentProvider
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT && DocumentsContract.isDocumentUri(getApplicationContext(), uri)) {
        // ExternalStorageProvider
        if (isExternalStorageDocument(uri)) {
            final String docId = DocumentsContract.getDocumentId(uri);
            final String[] split = docId.split(":");
            final String type = split[0];

            if ("primary".equalsIgnoreCase(type)) {
                return Environment.getExternalStorageDirectory() + "/" + split[1];
            }
        }
        // DownloadsProvider
        else if (isDownloadsDocument(uri)) {

            final String id = DocumentsContract.getDocumentId(uri);
            final Uri contentUri = ContentUris.withAppendedId(
                    Uri.parse("content://downloads/public_downloads"), Long.valueOf(id));

            return getDataColumn(getApplicationContext(), contentUri, null, null);
        }
        // MediaProvider
        else if (isMediaDocument(uri)) {
            final String docId = DocumentsContract.getDocumentId(uri);
            final String[] split = docId.split(":");
            final String type = split[0];

            Uri contentUri = null;
            if ("image".equals(type)) {
                contentUri = MediaStore.Images.Media.EXTERNAL_CONTENT_URI;
            } else if ("video".equals(type)) {
                contentUri = MediaStore.Video.Media.EXTERNAL_CONTENT_URI;
            } else if ("audio".equals(type)) {
                contentUri = MediaStore.Audio.Media.EXTERNAL_CONTENT_URI;
            }

            final String selection = "_id=?";
            final String[] selectionArgs = new String[]{
                    split[1]
            };

            return getDataColumn(getApplicationContext(), contentUri, selection, selectionArgs);
        }
    }
    // MediaStore (and general)
    else if ("content".equalsIgnoreCase(uri.getScheme())) {

        // Return the remote address
        if (isGooglePhotosUri(uri))
            return uri.getLastPathSegment();

        return getDataColumn(getApplicationContext(), uri, null, null);
    }
    // File
    else if ("file".equalsIgnoreCase(uri.getScheme())) {
        return uri.getPath();
    }

    return null;
}

private String getDataColumn(Context context, Uri uri, String selection,
                             String[] selectionArgs) {

    Cursor cursor = null;
    final String column = "_data";
    final String[] projection = {
            column
    };

    try {
        cursor = context.getContentResolver().query(uri, projection, selection, selectionArgs,
                null);
        if (cursor != null && cursor.moveToFirst()) {
            final int index = cursor.getColumnIndexOrThrow(column);
            return cursor.getString(index);
        }
    } finally {
        if (cursor != null)
            cursor.close();
    }
    return null;
}

private boolean isExternalStorageDocument(Uri uri) {
    return "com.android.externalstorage.documents".equals(uri.getAuthority());
}

private boolean isDownloadsDocument(Uri uri) {
    return "com.android.providers.downloads.documents".equals(uri.getAuthority());
}

private boolean isMediaDocument(Uri uri) {
    return "com.android.providers.media.documents".equals(uri.getAuthority());
}

private boolean isGooglePhotosUri(Uri uri) {
    return "com.google.android.apps.photos.content".equals(uri.getAuthority());
}

내 서비스 인터페이스는 다음과 같습니다.

    @Multipart
@Headers("Content-type: application/image")
@PUT("me/image?key=profile/1")
Call<ResponseBody>
putImage(@Header("Authorization")String authorization, @Part MultipartBody.Part image);

내가 보낸 데이터에서 우편 배달부를 사용하여 데이터를 가져 오면 PNG와 많은 데이터가 표시됩니다. 나는 그것을 올바르게 보내고 있는지 또는 내가 뭔가를 놓친 것인지 궁금합니다. 누구든지 도울 수 있다면 감사하겠습니다. 감사.

내가 로그인하면 이걸 보여줍니다

--> PUT http://lfapp.learnflux.net/v1/me/image?key=profile/1 http/1.1 

D/OkHttp: Content-Type: multipart/form-data; boundary=9a0fa5ce-b567-4115-    8e09-887291d68ab0  D/OkHttp: Content-Length: 181750   D/OkHttp: Authorization: Bearer ZDE1MGIwNGNjYmRkY2VkN2Y4ZGNhYWFmMDVmYTQyMmMzODk4YjcxN2M3YWZjNTNjNDlhNjBlMTQ1NWJlMWEwOQ
            D/OkHttp: --9a0fa5ce-b567-4115-8e09-887291d68ab0
            D/OkHttp: Content-Disposition: form-data; name="Image"; filename="IMG_20160712_104745.jpg"
            D/OkHttp: Content-Type: image/png
            D/OkHttp: Content-Length: 1817285
        ����!Exif����MM��*��������  ��������������z���������������������������������������������(��������������2������������������������������i����������������%������������������Xiaomi����Redmi Note3��������H������������H������2016:07:12 10:47:45���������������������������������"�����������������'������������������������0220��������������������������,��������������
        D/OkHttp: ����������@�������������H���
        D/OkHttp: ����������P����������������   ���������������
        D/OkHttp: ������������X��������������`��������������h��������������p�����������0100���������������������������������������������������������w���������������������������������������������������������������������������������������������������������������������������������d2016:07:12 10:47:45��2016:07:12 10:47:45�������������������������d��������������d����e������d753175����753175����753175��������������R98������������0100������������
        D/OkHttp: ������������������������S������������������������������E��������������������4��������������������������������L��������������T��������������l��������������x���������������������d�������������������������������'������p������������*��������������'�����������������������������/������������)������ASCII������GPS��2016:07:12����������������������������������������������(���������������������������������������0��������������H������������H���������������     
        D/OkHttp:  $.' ",#(7),01444'9=82<.342           2!!22222222222222222222222222222222222222222222222222����@���"������������������������� 
        D/OkHttp: ������}��!1AQa"q2���#B��R��$3br�  
        D/OkHttp: %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz���������������������������������������������������������������������������������������  
        D/OkHttp: ����w��!1AQaq"2�B���� #3R�br�
        D/OkHttp: $4�%�&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz��������������������������������������������������������������������������������������?����7Q��$3ۙI<���P�X�Vŀa�B�+ѓJ�c ¥�ˌ��=B�79ة�E�̧��k��qi7�.a=�i������U[�Z��6Uv��5MA�ڈ�   �fo [e���7@qU��RRʋ��(�?c���թAe
        D/OkHttp: �'���n��൐An�>Ӵ+Mp�շ��XI<�y{��ѐy�{�+����tl<��ϗ�F[�8�T�*�<l�ٻ�/cd���u$l�T�H�;�3n�F,��&�n�sV`ظ���@�-J��9zP"`� 58�L   2(��ў(OJcE�����u�
        D/OkHttp: ���J9�֞:P2AN4�h)�(9��iE��8c��4Z�������#>*�Jn�,U��+;r�3��X���-�۩��*)�.v6o�[��cʀ�b*;ӓw��z�<UD�"QҦH�2E6��Ϊ�Q�UQqD;����r�Y�m������O��?��^�a���i&���=H��[[{[��5ڽ�j�<�KY7�&6!�E\z˩b{���J��5TK�rF�#�*qqj�%^}�[����h"�L>Y�4����n8�O[����7j.(����5 �k4F�8��!*�3Nz��G��in��}�<\ޞ.{Qa�)A���� �{R�4�x��2�Ī{�2py�f���?p����.M43ށ��.O�4G֗<t������U����� �\r#�rK!!�~R[���{�h�����5����>���b>�=�q�J�ȇ*�>����T����SN�؊�SP����G��]nu���T��l�����^�`f9V��.����}F�La��hI��)#]:d��������9|�*7!� S�d8#ɐt�(k���H?�h�n�*#n���>b}�Mu�����j�k�I�c}E+@�p��D�c�/�|��l������Yl��j�~"�8�-�_�5�b�����"=�~��K�:h�&Ǎ��j�ͦO�.���8�;��zL���'؜��F�5W0�N��:   y�h���CҸo"�>B��Z�;�B܍�3�?�4�c�mut�U��S�M`��f�a��_��z��`��{�(��{��/�6H���C��s���:H����oW��w���kk�s���; ����֜�0=MnG�[��R2�"�.��]�څ����.s"䊐]c�]���d0�5BO]��6�9�u�H.A�>�w�6��·�9���s���YN-�=�j� �S��<�J�Jd8�6�qQPHiiZ0�M8�M ҏ5�G?�!�,;�Qw*� �E8^���y#U�4Ҳ)I���g�#���MfJ�R�٭�n����j��ш��U�,�ir��Z6�����7� ?Jx���C
        D/OkHttp: ,�̅t$}<K(�)?^i�X[���K�Xp*.�d�y�����Q��֣�EFP���їFi�1r!�M��x���&�����gB*=�"�#���/f�?��?�淓���֝��n|=y=ı�QI��H�Y��q�:b�v�AJ���;��lSSD�2X�uk7;��O�v�m�_Z���=%P�A/�S�َ̇�)���$�   ?ތU)�]6tP�L՗}����M����F��b�D�b|���:��W���Yb�Tr(���q�©O̞C���W|N��5't{㚲x����W�����$V�GZ�A������֐�2*3R���S=�3HcI�q����CIA��aIE�(���
        D/OkHttp: PH�H���ܐO"�sR-䃨��E��˂����R�7F �E+�����e�Q���=du��~4�F�_c���T�����Ӆ��)�R�)MF(���YgOR*U��ҳ+����Zu$+��N~���zTdU�X:�^E2A�C�DK�ʟ���S�+�*r(TR�咊��a���j��a��Di����M)��M��������Q@%-%��QE �J)��Q�(���
        D/OkHttp: ��Zp������V
        D/OkHttp: ��FEX�H��Fѱ�!������f�g!���)J�h�<t~��}�P!�B�3T/HZ�i�Q�@4�R�m���Q@  E���QE���R�b��Q@    E��(��`�R���8RS�����TDT�
        D/OkHttp: ad��La���Vq�?ިpƬJ?x��5�H
        9a0fa5ce-b567-4115-8e09-887291d68ab0--
        D/OkHttp: --> END PUT (1817503-byte body)
        I/Timeline: Timeline: Activity_idle id: android.os.BinderProxy@3c9a1e7f time:579318048
        I/Choreographer: Skipped 57 frames!  The application may be doing too much work on its main thread.
        D/OkHttp: <-- 200 OK http://lfapp.learnflux.net/v1/me/image?key=profile/1 (2409ms)
        D/OkHttp: Date: Tue, 25 Oct 2016 09:49:55 GMT
        D/OkHttp: Server: Apache/2.4.7 (Ubuntu)
        D/OkHttp: X-Powered-By: PHP/5.5.9-1ubuntu4.16
        D/OkHttp: Cache-Control: no-cache
        D/OkHttp: Content-Length: 2
        D/OkHttp: Keep-Alive: timeout=5, max=100
        D/OkHttp: Connection: Keep-Alive
        D/OkHttp: Content-Type: application/json
        D/OkHttp: ""
        D/OkHttp: <-- END HTTP (2-byte body)
디 팔리
 protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);


        if (resultCode == RESULT_OK) {

            if (requestCode == FILE_PICKER_REQUEST_CODE
                    && resultCode == RESULT_OK && null != data) {

                Uri selectedImage = data.getData();
                String str = getRealPathFromUri(this, selectedImage);
                uploadFile2(str);

            }
        }
    }

    public static String getRealPathFromUri(Context context, Uri contentUri) {
        Cursor cursor = null;
        try {
            String[] proj = {MediaStore.Images.Media.DATA};
            cursor = context.getContentResolver().query(contentUri, proj, null, null, null);
            int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
            cursor.moveToFirst();
            return cursor.getString(column_index);
        } finally {
            if (cursor != null) {
                cursor.close();
            }
        }
    }

WebserviceCall 메서드

 private void uploadFile2(String fileUri) {
        //slp upload profile image
        RequestBody userid =
                RequestBody.create(
                        MediaType.parse("text/plain"), ("16151"));
        RequestBody username = RequestBody.create(MediaType.parse("multipart/form-data"), "ankitgiri1");
        RequestBody password = RequestBody.create(MediaType.parse("multipart/form-data"), "1");
        RequestBody email = RequestBody.create(MediaType.parse("multipart/form-data"), "[email protected]");
        RequestBody fullname = RequestBody.create(MediaType.parse("multipart/form-data"), "ankitgiri");
        RequestBody mobile = RequestBody.create(MediaType.parse("multipart/form-data"), "1471471471");
        RequestBody country = RequestBody.create(MediaType.parse("multipart/form-data"), "India");
        RequestBody education = RequestBody.create(MediaType.parse("multipart/form-data"), "MCA");
        RequestBody common = RequestBody.create(MediaType.parse("multipart/form-data"), "");
        RequestBody DOB = RequestBody.create(MediaType.parse("multipart/form-data"), "2012-02-02 00:00:00");
        RequestBody lng = RequestBody.create(MediaType.parse("multipart/form-data"), "3");
        RequestBody learningMethod = RequestBody.create(MediaType.parse("multipart/form-data"), "1");
        RequestBody RepeatCounter = RequestBody.create(MediaType.parse("multipart/form-data"), "2");

        // create upload service client

        // use the FileUtils to get the actual file by uri
        File file = new File(fileUri);

        // create RequestBody instance from file
        RequestBody requestFile =
                RequestBody.create(MediaType.parse("multipart/form-data"), file);

        // MultipartBody.Part is used to send also the actual file name
        MultipartBody.Part body =
                MultipartBody.Part.createFormData("ProfilePic", "dipalitest.jpg", requestFile);

        // finally, execute the request
        Call<User> call = WebServiceClient.getWebService().updateUser2new(
                username, password, userid, email, fullname, mobile, common,
                common, DOB, country, education, common, lng, learningMethod, RepeatCounter, body);

        call.enqueue(new Callback<User>() {
            @Override
            public void onResponse(Call<User> call,
                                   Response<User> response) {
                Log.v("Upload", "Resonse=" + response.message());
            }

            @Override
            public void onFailure(Call<User> call, Throwable t) {
                Log.e("Upload error:", t.getMessage());
            }
        });
    }

WebService 호출

@Multipart
    @POST("UserProfile/SetUserProfile")
    Call<User> updateUser2new(@Part("Username") RequestBody Username, @Part("Password") RequestBody password, @Part("UserId") RequestBody userID,
                              @Part("Email") RequestBody email, @Part("FullName") RequestBody FullName,
                              @Part("Mobile") RequestBody Mobile, @Part("ParentMobile") RequestBody ParentMobile,
                              @Part("Address") RequestBody Address, @Part("Dob") RequestBody Dob, @Part("Country") RequestBody Country,
                              @Part("Education") RequestBody Education, @Part("ReligiousStudy") RequestBody ReligiousStudy, @Part("Language") RequestBody Language,
                              @Part("LearningMethod") RequestBody LearningMethod, @Part("RepeatCounter") RequestBody RepeatCounter,
                              @Part MultipartBody.Part file);

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

Python에서 이미지를 업로드 할 수 없습니다.

분류에서Dev

Python에서 이미지를 업로드 할 수 없습니다.

분류에서Dev

Xcode 9-펜촉에서 참조 된 "sampleImage"이미지를로드 할 수 없습니다.

분류에서Dev

이미지를 폴더에 업로드 할 수 없습니다.

분류에서Dev

이미지를 폴더에 업로드 할 수 없습니다.

분류에서Dev

PHP에서 업로드 된 이미지의 크기를 어떻게 조정할 수 있습니까?

분류에서Dev

안드로이드는 서버에 이미지를 업로드 할 수 없습니다

분류에서Dev

서버에 PHP로 이미지 파일을 업로드 할 수 없습니다.

분류에서Dev

500 서버 오류로 인해 서버에 이미지를 업로드 할 수 없습니다.

분류에서Dev

laravel의 폴더에 업로드 된 이미지를 표시 할 수 없습니다.

분류에서Dev

내 minikube에서 캐시 된 이미지를로드 할 수 없습니다. Windows 10 Enterprise Edition이 있습니다.

분류에서Dev

iOS의 서버에 이미지를 업로드 할 수 없습니까?

분류에서Dev

mongoDB 서버에 문서를 업로드 할 수 없습니다.

분류에서Dev

서버 iOS에 이미지를 업로드 할 수 없음

분류에서Dev

express.js에서 업로드 된 이미지를 읽을 수 없습니다.

분류에서Dev

Httprequest 라이브러리를 사용하여 서버에 이미지를 업로드 할 수 없습니다.

분류에서Dev

Apache2 웹 서버에서 이미지를로드 할 수 없습니다.

분류에서Dev

TinyMCE는 IE11에서 이미지를 업로드 할 수 없습니다.

분류에서Dev

이미지를 업로드 할 수 없지만 자산에 pdf를 업로드 할 수 있습니다.

분류에서Dev

개발 APN 인증서를 업로드 할 수 없습니다.

분류에서Dev

이미지 업로드 PHP를 위해 업로드 된 파일을 이동할 수 없습니다.

분류에서Dev

업로드 된 이미지는 편집보기에서 편집 할 수 없습니다.

분류에서Dev

업로드 된 이미지를 캔버스의 배경 이미지로 설정할 수 있습니까?

분류에서Dev

C # 코드에서 이미지 ID를 참조 할 수 없습니다. 왜?

분류에서Dev

WordPress는 AWS Linux의 웹 서버에 이미지를 업로드 할 수 없습니다.

분류에서Dev

Rails 6 / Webpack이 프로덕션에서 js.erb에서 참조 된 이미지를 컴파일 할 수 없습니까? (그러나 개발 중)

분류에서Dev

iMacro는 PHP에서 생성 된 이미지를 다운로드 할 수 없습니다.

분류에서Dev

opencv (python)에서 이미지를로드 할 수 없습니다.

분류에서Dev

opencv (python)에서 이미지를로드 할 수 없습니다.

Related 관련 기사

  1. 1

    Python에서 이미지를 업로드 할 수 없습니다.

  2. 2

    Python에서 이미지를 업로드 할 수 없습니다.

  3. 3

    Xcode 9-펜촉에서 참조 된 "sampleImage"이미지를로드 할 수 없습니다.

  4. 4

    이미지를 폴더에 업로드 할 수 없습니다.

  5. 5

    이미지를 폴더에 업로드 할 수 없습니다.

  6. 6

    PHP에서 업로드 된 이미지의 크기를 어떻게 조정할 수 있습니까?

  7. 7

    안드로이드는 서버에 이미지를 업로드 할 수 없습니다

  8. 8

    서버에 PHP로 이미지 파일을 업로드 할 수 없습니다.

  9. 9

    500 서버 오류로 인해 서버에 이미지를 업로드 할 수 없습니다.

  10. 10

    laravel의 폴더에 업로드 된 이미지를 표시 할 수 없습니다.

  11. 11

    내 minikube에서 캐시 된 이미지를로드 할 수 없습니다. Windows 10 Enterprise Edition이 있습니다.

  12. 12

    iOS의 서버에 이미지를 업로드 할 수 없습니까?

  13. 13

    mongoDB 서버에 문서를 업로드 할 수 없습니다.

  14. 14

    서버 iOS에 이미지를 업로드 할 수 없음

  15. 15

    express.js에서 업로드 된 이미지를 읽을 수 없습니다.

  16. 16

    Httprequest 라이브러리를 사용하여 서버에 이미지를 업로드 할 수 없습니다.

  17. 17

    Apache2 웹 서버에서 이미지를로드 할 수 없습니다.

  18. 18

    TinyMCE는 IE11에서 이미지를 업로드 할 수 없습니다.

  19. 19

    이미지를 업로드 할 수 없지만 자산에 pdf를 업로드 할 수 있습니다.

  20. 20

    개발 APN 인증서를 업로드 할 수 없습니다.

  21. 21

    이미지 업로드 PHP를 위해 업로드 된 파일을 이동할 수 없습니다.

  22. 22

    업로드 된 이미지는 편집보기에서 편집 할 수 없습니다.

  23. 23

    업로드 된 이미지를 캔버스의 배경 이미지로 설정할 수 있습니까?

  24. 24

    C # 코드에서 이미지 ID를 참조 할 수 없습니다. 왜?

  25. 25

    WordPress는 AWS Linux의 웹 서버에 이미지를 업로드 할 수 없습니다.

  26. 26

    Rails 6 / Webpack이 프로덕션에서 js.erb에서 참조 된 이미지를 컴파일 할 수 없습니까? (그러나 개발 중)

  27. 27

    iMacro는 PHP에서 생성 된 이미지를 다운로드 할 수 없습니다.

  28. 28

    opencv (python)에서 이미지를로드 할 수 없습니다.

  29. 29

    opencv (python)에서 이미지를로드 할 수 없습니다.

뜨겁다태그

보관