无法使用Retrofit2上传图像文件

时间:2019-07-04 02:50:50

标签: java android android-studio file-upload retrofit2

旧代码存在问题,发送到服务器的图像是缩略图(太小)。因此,借助新代码,Android改变了获取实际尺寸图像的方式。但是,新代码无法将文件上传到服务器。它说文件名是空的,并且当我登录正文时,请求的结果与旧代码不同。任何帮助,我都非常感激,因为近一个星期我仍然找不到新代码的问题。

///////// This is old cold//////////////////////////////////
///////////////////////////////////////////////////////////
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
startActivityForResult(intent, REQUEST_CAMERA);

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {

    super.onActivityResult(requestCode, resultCode, data);

    if (data != null) {
        switch (resultCode) {
            case Activity.RESULT_CANCELED: {
                break;
            }
            case Activity.RESULT_OK: {
                if (requestCode == REQUEST_CAMERA) {
                    Bitmap thumbnail = (Bitmap) data.getExtras().get("data");
                    ByteArrayOutputStream bytes = new ByteArrayOutputStream();

                    thumbnail.compress(Bitmap.CompressFormat.PNG, 100, bytes);
                    if (typePhoto.equals("ftCarLol")) {
                        carLoL = new File(Environment.getExternalStorageDirectory(),
                                System.currentTimeMillis() + "ftLol.png");

                        FileOutputStream fo = null;

                        try {
                            carLoL.createNewFile();
                            fo = new FileOutputStream(carLoL);
                            fo.write(bytes.toByteArray());
                            fo.close();
                        } catch (FileNotFoundException e) {
                            e.printStackTrace();
                        } catch (IOException e) {
                            e.printStackTrace();
                        }
                        ftCar.setImageBitmap(thumbnail);
                    }

                    if (typePhoto.equals("sdcarLol")) {
                        sdCad = new File(Environment.getExternalStorageDirectory(),
                                System.currentTimeMillis() + "sdCars.png");

                        FileOutputStream fo = null;

                        try {
                            sdCad.createNewFile();
                            fo = new FileOutputStream(sdCad);
                            fo.write(bytes.toByteArray());
                            fo.close();
                        } catch (FileNotFoundException e) {
                            e.printStackTrace();
                        } catch (IOException e) {
                            e.printStackTrace();
                        }
                        sdCar.setImageBitmap(thumbnail);
                    }

                }
                break;
            }
        }
    }
}

// in retrofit
MultipartBody.Part[] imageUserList = new MultipartBody.Part[2];
RequestBody propertyImage = null;for(
int i = 0;i<2;i++)
{
    if (i == 0) {
        propertyImage = RequestBody.create(MediaType.parse("image/*"), carLoL);
        imageUserList[i] = MultipartBody.Part.createFormData("car", carLoL.getName(), propertyImage);
    }
    if (i == 1) {
        propertyImage = RequestBody.create(MediaType.parse("image/*"), sdCad);
        imageUserList[i] = MultipartBody.Part.createFormData("sd", sdCad.getName(), propertyImage);
    }
}
// Call function interface retrofit
Call<JsonObject> clientreq = client.submitReport(imageUserList);

// interface retrofit
@Multipart
@POST("TestReport")
Call<JsonObject>submitReport(@Part MultipartBody.Part[] files);

/////////////////////// new code////////////////////////////////////
File tempFile = new File(Environment.getExternalStorageDirectory(), "tmp.png");
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
Uri photoURI = FileProvider.getUriForFile(this, "cntsb.com.rodeo.fileprovider", tempFile);

// result activity
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    if (requestCode == REQUEST_CAMERA && resultCode == RESULT_OK) {
        if (typeChoose.equals("sdcarLol")) {
            sdCad = new File(Environment.getExternalStorageDirectory(),
                    System.currentTimeMillis() +"sdCars.png");
            try {
                sdCad.createNewFile();
                if(tempFile.renameTo(sdCad)) {
                    Glide.with(context).load(sdCad).into(sdCar);
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        if (typeChoose.equals("ftCarLol")){
            carLoL = new File(Environment.getExternalStorageDirectory(),
                    System.currentTimeMillis() + "ftLol.png");

            try {
                carLoL.createNewFile();
                if(tempFile.renameTo(carLoL)) {
                    Glide.with(context).load(carLoL).into(ftCar);
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
}

// attach file into retrofit
MultipartBody.Part[] imageUserList = new MultipartBody.Part[2];
RequestBody propertyImage = null;for(
int i = 0;i<2;i++)
{
    if (i == 0) {
        propertyImage = RequestBody.create(MediaType.parse("image/*"), carLoL);
        imageUserList[i] = MultipartBody.Part.createFormData("car", carLoL.getName(), propertyImage);
    }
    if (i == 1) {
        propertyImage = RequestBody.create(MediaType.parse("image/*"), sdCad);
        imageUserList[i] = MultipartBody.Part.createFormData("sd", sdCad.getName(), propertyImage);
    }
}
// Call function interface retrofit
Call<JsonObject> clientreq = client.submitReport(imageUserList);

预期结果:在日志请求正文之后

�PNG

    ������IHDR��������������������}��������s��O����� ��IDATx�\�k�d�q%�wĹ7���h4��B$%R�F������|�G�k��g$��z-{F=H�C
    $�@t��g>�9��f������2o�s"b��;��/�o�&�Hp��)��4�l��gs��    �   ��I@FdN�'l9�ۭ���    ��  ejb�H�q��,��':Jw�D)`�4�"ő   3#9��Lg���d LF���f:߸5O��L�bhn��HN�$) !�$�dDЍ�� -F���e0E)��  ��[r$DP���6�    �����߼T��4���1�`��+4�$M���%s�sR�L�� ��B�D2�������$Ѥ$������RRԚ.cDv����[(3����R�Df�9:"a23R!����"!)��BL�dfRQ[��C��jl����{}�e9�
    e�0���s(d�T��H)QR(���H@fX����)���Hm2(Aa�C��$��i6��"�%q������LfI(�F���Zf�$
    �d2If�0���Y�LF����`��D$pGI����(364��6�eO���@dD$֣�Ӻ�0�$IA����[I!���'LI��9�@i֤>ƨ?���0��ʡ��&��4$��DMn�.�ljH���IR��
    4   �9���PH��ƒ@D�4��͐��@�Y��]Rf���1s��  $�"I�� ��c����7)3��f���xR�C)i$���U�X�}u�ZSw�il��H��`��吹�:��mM +����m�z���S(�XX'֜Z�f�3@!�)I�"�@��ެ>�c���i�����E��S��d(33"�9���tw%ͽ��H2I�9J)�C���$Ț�2�L$��ȔxX��K
    �<7��4�S��H&epI�j�Բ�1z��L���b����\c��`��\?�H�jM�0�  R@ ��|<Q�   QI���6ײ$է����j�"S�,��?u���D���zI8��f����ˈTD�ߎr��_=�`��3��H��˼2���I!����5nͥ�+�Y�uְnF=���~`�B��״�`մ�����̬MDssw�%2s�NfBf(qJ
   ID�2S\�HV�!����R�Z��Hef�H�8��z�ua���4��:H�Q{��t�Uj�I1���_V����@!AEJ
    [��CffHO������jwk�!���5�CT؀��E���,c�/���:��rN��`����@B���<������ʢ���썭��YYE�)V��9�R6�f��4�$  dB0�U3SF��f�����X���FV
    ��1tJ5\��tk���VxT�S��������&V4��I�H4d��LO���.h*#�))���M-s���&@33���$d3I$�m=�`m�d�/��{�`)���
    =��F���L3�H$��4��gIt��Ar@f03�G�q%Y�N@~ʼv�1�̯���I2��HZq2m�me��!i2.�RI�S$h(�5��R�����5���wP�ҪC8�^>��S�]SY�##��i�TbG�g2bT:�F Ɍ��&o�H`>��pnI�Ԛ(��
    4dk�"N�i$�4{%h"Sn�Ќ��D�ZkUN��{���z�@����4k
    dB��[Y(C��I��if ������tx%n���kMO�I��Lr�(�=�ehHLA9F0*��V(\�����2S^�B��$�.)B�QHiD׊�(�*kם�4M����H�9�fNfV+r
    ���(�16�R���.<ǪRF�,�d$92��aP��.#����ښ"ift0:�)�ܽ���G�&�(d_�H+df���j�)��7���$Vk���(#9MS5v�d�zP��  ��BdJ�1����D���ٚ�����z�2�@��c��UxQh6R˲��N�iE�nS��s��Tݵ��@DdF��C'��D�<��$��܎J0��׏��^ߨ�s��ڒ��C�bD�y������I��֚Y�@��   ���������"  @LU!Y����53W�!L2m����U�Y��(xM2�R�A�jg�v*���6W:�r��jX$�6RZѝ5�t��)��<G��BM(Y����y��7��c���2N��R�1WT`�٦*�IV�è����D�Ĝ���2��^    �8U�GkE�$��N8
    (���hk/�#��3�nS�5�g��r<���ՙ����0�<���}D�,�Wi@�P�t�$ִ����0"j����D��

新代码中的错误:

����A2Exif����MM��*�����������������������������������������������������������������������������������������������������������������������������(��������������1���������������2������������������������������i����������������!8HUAWEI����DUK-L09��������H������������H������DUK-L09 9.0.1.176(C636E2R1P5)�����2019:07:04 10:46:13����.��������������������������������P�������������� ʈ"���������������'������������������������0210������������� ڐ������������ ������������������������ ��
    ����������X������������� Ғ��
    ����������@���
    ����������H������������� �������������������������������    ���������������
    ������������0�|��������d���� N�|����������� ��|��������/�������|�����������`�|������������ H��������������!��������������!
    ��������������!�����������0100��������������������������������������������������������!�������������������������������������������������������������������������������������������������������������8������������������������������������������������������������������ �����������������
    ����������������������������������������������������������d������d����������������������������
    ����;������������'#*#*201709272016::76������/��`����������DLBB8�}N�������������������::76������/��`����������DLBB8�}N�������������������::76������/��`����������DLBB8�}N�������������������::54������/��`�����@����AIBB8�wN�������������������::54����/����`�����@����AIBB8�wN�������������������::54����/����`�����@����AIBB8�wN�������������������::2����.����`�����@����=EBB8�rN�������������������::0/������-��`�����@����:CBB8�oN��������������������� ��4����B������������������������������������������275��h����� ��+����j^SJC>93+$m_TKD?:4,%o`ULE?:4-%qbVME?:5.&sdWMF@;7/' ueXMFA=70( vfXNGA=81)!vfYNGB=81)"ufYOGB>92*"teZOHB>:3+#tfZPIC>:4+$tfZQIC>:4,$sfZRJD>:4,%qdZRJD?:4-%odZQJD?:5-&mcYQJD?:5.&������������������������������������������������������������������������������������:�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������J���@�������������������������������������������x�� �������F��F���������������������������������������   ����������������������*������:����������������������*������:������(��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������

0 个答案:

没有答案