Как отобразить изображение в laravel после возврата изображения из API Guzzle - PullRequest
0 голосов
/ 16 апреля 2019

Привет! Я хочу показать приватное изображение в своем проекте, отправив API с токеном jwt. Я использую почтальона, чтобы проверить. Почтальон возвращает изображение, но как я могу отобразить изображение, как почтальон.

Вот мой код контроллера sendApi

public function getIdCard($name) {
        $token = $this->getToken();
        $client = new Client(['base_uri' => env('URL_FRONTEND')]);
        $headers = [
            'Authorization' => 'Bearer ' . $token,
        ];
        $response = $client->request('GET', 'storage/getIdCard/icQE5nwU1jQl1lrIZJmGxVs2GDIIsDjbuQo541VlwzhNTl7iEe1555385649.png', [
            'headers' => $headers
        ]);

        $response = $response->getBody()->getContents();
        return $response;
    }

Вот мой API / Контроллер [из другого проекта]

 public function getIdCard($file_name){;
        $storagePath = storage_path('app/id_card/'. $file_name);
        return Image::make($storagePath)->response();
  }

Вот что я получаю

PNG  IHDR��B5   pHYs���+ IDATx��yx�U�?��Nw�@B�o�Ha"ʦ� ����(.����� ��l^t��늨�D�EYe5Q�d5l��,$d�������'U眷�~��ɓ~�R���T�yC���t� ��b���`�$���z�Á�� ->W� ]�+��*������L�����"y��Hn��yj��H�Ma�ɗ�"��x��ǹϺxt�7�8���H��M�_0�ҿs�/<��o�X����h*,��,5e�Ή��1{�e��pS�,�M����z��)�R8fd5����\����SƗ�r�:J�j�ǸO�UfK�d�U��vR:��ƛ7*��v2�������dS�T礱����=c/j��\�kus��:������,�DE�Z��E���R)Y�AT�׈��!~��(�s�m@ͻ��M:"&n�����d���/�8��]�1�d���[� +5�s.tyǩ)��lF��ĬJ���us����[c�F:�U����%����/���*]���B�'Q��2]:X�݋�����q���R_�5N���"n�j� �[����}W}��#�7��{Va?��íQ���]5�����_J���¤��6NG�-͜5n?#�8Ug�z��esoT��]+����!]�E]�x����D=[�N�K���8��*5�3Ήrd�p�ps:�#%��O��-�\E^:gNg^��rq��O��iPT�\q�(�_�3{84�����kWH�o��Zw��/�Y�+��r��

В Почтальоне это возвращено Изображение Как я могу отобразить как почтальон

UPDATE Я добавляю функцию в Api / контроллер все еще не работает

public function getIdCard($file_name){;
        $storagePath = storage_path('app/id_card/'. $file_name);
        $headers = [
            "Content-type: image/png",
        ];
        return response()->file($storagePath, $headers);
   }

** ОБНОВЛЕНИЕ 2 **

Я работаю над 2 проектом - Первый проект, который я возвращаю API return response () -> file ($ storagePath, $ headers); -Тогда я использую почту человека, и это возвращается изображение - Второй проект, я хочу получить изображение из API, и я использую

   $response = $response->getBody()->getContents();

Текст возврата / html Как отобразить его на изображении

Ответы [ 2 ]

0 голосов
/ 20 мая 2019

Вот решение:

$data = $response->getBody()->getContents();
$base64 = 'data:image/png;base64,' . base64_encode($data);
echo '<img src="'.$base64.'">';
0 голосов
/ 16 апреля 2019

Я действительно не знаю, какой у вас класс Image, поэтому я бы сказал, как это сделать с помощью встроенных функций.

return response()->file($pathToFile, $headers);

Скорее всего, при вызове метода file вам не понадобятся никакие заголовки (как второй параметр), но в случае, если он вам нужен, попробуйте использовать что-то вроде ["Content-type: image / png"]

...