Java

工作流生成图片乱码(�PNG)

2019-01-28  本文已影响0人  挑战者666888

异常信息如下:

�PNG
�
���
IHDR�������F����������
�IDATx��]L����I4��s�e/Lj���E/j����ً��F��6H�Y����h�F"���h�   ј(G+5� �** ����T���G�ȗX�!�������2dXXم�aX�O�dwfva�����}��w��д�����Ғ_SS󩴴Tݹs��쒒�UYY�_m7\a��+��+�B��Ш��R===jpp�ϐ߾}�***�t���+Wp�Wp�W9X��&4�����%�W���
��
��r���*NZ�X���\a��+��+�B����G���
��W���
��
��������.�R{^=+9hX��:Nv����
��
�0\!
h���v�������w����m����\��\��\a�B����~��q�a��Y�'<��Wp�Wp�W�����Սw��
��� Op��\��\���+D�m��;�~�C�q���p�Wp�Wp��
Q@����\��\a��+�Bhj�!W������ Op��\��\���+D�mqs�i��!�8�   ���+��+��p�(�-~�Ѡ��>0�k+�N�q���p�Wp�Wp��
Q@���??���Y��Np��\��\�����)..��ׯ�t�\y��v�����Y��Ί�����;���������ͭ����KOO�JLL��Sn����͛�����r�ȑKڿ�������~�����:�� Op��\��\������k��� ު��F�倬��P?����|�����ի?dee
edd�3gΨ�����ѡ����H�{zzT]]����ڶm���۷�JIII����ݗ��O���%۸����Wp�Wp�W0�W�K����~�L�<�_kG�e�u��t�С��v�2����a���=z����3��x�u����,�u����L=)����0-����
'8�
��
��
6�j�^g]����������O�V���F������t�JM�������&*�/��
U�����²��TUTT�T����b�ao$�FO�����i���p�Wp��
��*0EGG����=k�+u�ԙ�?~�&�zV>�y�O��?�!�R<����;--M555�P�իW������|-�t ��/��    �����
��
�0��h���Y��=��Jz�������R�Oy'��Y�g�����祤���\.��P@O54L����\��\��\a
�(��a-vetD($�S||����S�A��,�ڡ�y��':!!�W���Fz��   ���+��p��jz��`p8�ų���鉎�v��������z�|u��u����P@c����
��
�0\}i�u�
������x��x肂���l���Ğ��l���IC9�����
�0\q<�*��y���Nu�s c�}.,�>��g��Y���C��?���^h����+��+W�O�
���ћ��l���P�ր.(�;ʅ�ә�.X%%%u��\���wG������W��0\��\������G�y��  ��7m�d�c�����s�;wN٩�'N<
��|�d~�r���A����\��\a��x�U���3���MR��m����5������'��S��ߗA�E���[|s����Ap��\���+�'\��+��gn��F�;�Z煞��IOO���겵�����+�g���m1Y�4�Ap��\���+�'\��+���\oW�*�,��O����-�+���>�s����[[L����Ap��\���+�'\��+�As9\�o��MM���̄���g�   �g��0\��\��\E�g�6���ްa�g�{��^o�,�-���)N����޽��5���c����F����O����
��
��
�f�+����=�iii�v������q������N���wG�Z�Jn��
��՚5kd�@c�\'��y���\�p�x.��,X��������&8�
��
��
���V���CǏ�޿���ݳpܺu��,��������I�������c��n���Hk��˗F�[��޽�


��799y�u����+��+��+��+;����p�;v���@�8p��,��z��Ӄ���B�^�z����xF�K��coo�jkk3Zಜ���JKK��


��\��\��\��\��W�5��?���}�~�u��O6މp ..���D�����@���m]>z��jmm5�ˣ�?u�Z�l�Z�bŬ
�n��Wp�Wp�Wp5�5�w"LNN��ԝE;v�����ή�����UEE����Ң����+W��K�.�%K���'O����u�֩�����bs�������hy��\��\��\���=�fA[\\���T>3K�s�dߺ�j�ƍ1;w������W�*�].���:|�!��/_�]�p�B�
kp�={�X�x�bc�\}*۞?�>fY����p�Wp�Wp�Wpe�t��l�����a��C�����d)���b���PTT���Y�[K�s��=����0�챶�_�x��̙3�^����l���p�Wp�Wp�Wp�
%&&�`�����
Km���g�}~����M�]勒���MMMa�����B�;�t��ۨ���c޼yj��ݪ��ٰ@����w�u�zA���&8�
��
��
����a���Cf�{�ƍ�֦eee�S�EOiG�nw���y/s�R��������"i�S�c���~��c�k���m�Lgg��\__o�_���\��x��_r�D__�_]��\��\��\��L����0TE���            Ö�}qZ;�����������h�y��966vOT��I�!'�d�1�v��"��K��S�DGG��rY,�#�"�R��p�Wp�Wp�Wpe�F�Lx�ZD�p���E[��3lØ�Y��L{gu����v�]�v�i\X�{��qi5ti'FE������H���
��
�"�֒"�zs���B��#�:U^'��>���s��'�2_���W��Qw}}�7������y����G�"m�3�Ap��\���+�����>o��m������jkk��~��uHO�I�o��&)���<����!�y�SH��BZ������g���k����2�ν^owgg�%%%���̼����"���:G�l�����Wp�W���
�fV#��������_O���`���_�\�����񁑝��ّ"�;/R�0Hp��p��
��\���$�Ʊ��[u���d�,���!�������0\a��+��e=ҿ��'c�uQ�Ч��Q:~�������������������
��
S@#
hLp��\���+W�������+��+W���"8���p��
��
!����+W���
��"80��0\��\����F���������
��
S@#
hLp��\���+W�������+��+W���"8���p��
��
�0������9���1�W���
��
��r�*++�zzz8i��������h�+Wp�Wp�W9Xeee�*//��͛7^NޙkqKh����i��+Wp�Wp�W9\���t��V�6��G�v����i��Wp�Wp�W�k�
!��B!��B!��B!��B!��B!��B!��B!��B!��B!��B!��B!��B!����?��.����IEND�B`�

生成图片代码如下:

···

 @ApiOperation("生成图片")
 @RequestMapping(value = "/queryWorkflowImage", method = RequestMethod.GET)

public void queryWorkflowImage(String flowId,  HttpServletResponse response) {

    if (StringUtils.isBlank(flowId)) {
        return;
    }

    RayActivitiFlow rayActivitiFlow = rayActivitiFlowService.selectById(flowId);
    if(rayActivitiFlow == null) {
        return;
    }
    InputStream inputStream = null;
    OutputStream outputStream = null;
    try {
        if(!rayActivitiFlow.getFlowStatus().equals("1")) {
            return;
        }
        ProcessDefinition singleResult = repositoryService.createProcessDefinitionQuery().deploymentId(rayActivitiFlow.getProcDefId()).singleResult();
        //根据流程定义获取输入流
        inputStream = repositoryService.getResourceAsStream(singleResult.getDeploymentId(), singleResult.getDiagramResourceName());
        outputStream = response.getOutputStream();
        //将输入流中的数据读取出来,写入到输出流中
        for (int i = -1; (i = inputStream.read()) != -1;) {
            outputStream.write(i);
        }

    } catch (Exception e) {
        log.error(
                "controller:RayActivitiProjectWorkflowRelationController ->method:queryWorkflowImage->param:flowId:{}->Exception:{}",
                flowId, e);
    } finally {
        if (inputStream != null) {
            try {
                inputStream.close();
            } catch (IOException e) {
                log.error("error message", e);
            }
        }
        if (outputStream != null) {
            try {
                outputStream.close();
            } catch (IOException e) {
                log.error("error message", e);
            }
        }

    }
}

···

解决办法:

设置响应头:

···

        response.setContentType("image/png;charset=utf-8");

···

原因分析:

如果你不设置response的contentType,发现reponse的响应头中 Content-Type 为 application/json ,响应按照json格式形式,给你响应回去了。

上一篇下一篇

猜你喜欢

热点阅读