2017-01-18 5 views
0

Я пытаюсь загрузить изображение миниатюр youtube локально и получить их данные как размер файла и так далее. Из ссылок, как этот: http://img.youtube.com/vi/bnRVheEpJG4/maxresdefault.jpg Я получаю URL из oembed, как это:Laravel 5.3 загрузить изображение с url и получить данные изображения

$info = Oembed::get($externalMedia); 
$image = file_get_contents($info->image); 

dd($image->getClientOriginalName()); 

Я просто хочу, чтобы сохранить изображение на сервер, но до того, что я хотел бы проверить, существует ли maxresdefault видео YouTube. Поэтому я думал сначала проверить размер изображения, так что, если он низкий, я его не загружаю, так как это не будет миниатюр maxresdefault. Не уверен в другом способе достижения этого. Но я не получаю изображение загруженное на сервер, я думаю base64 данные или не уверен, что это:

����JFIF``��;CREATOR: gd-jpeg v1.0 (using IJG JPEG v80), quality = 90 
��C 




��C  

��h�"�� 
���}!1AQa"q2���#B��R��$3br� 
%&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz���������������������������������������������������������������������������  
���w!1AQaq"2�B���� #3R�br� 
$4�%�&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz��������������������������������������������������������������������������?����(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��Q�(��(��(��(��(��(��(��(��(�b� 
(�� 
(�� 
(�� 
(�� 
(�� 
(���1F(��(��(��(��(��(��o�V:���������~j�Ǔ=�����(����?�&��K��=�뤟�ZQ~Ϟ �����e��T��W�]|׬�������_�5Y��+ա��3����� 
�h�R��g�k?�ot��]d���T���$�����e��T�W���_��ޝ�%��URO�:�=n������y��K��Q����Y��[��������Ew_���o��c��*[_�Z�����/����t���R�ڽ�K��<[�K��q�����J?��t�����/?��:�����#_fϞh�����'��=K�V�������5�X�/�)jG0�����]/����9�٢����N�]����?�u�ȵn�$o�ٿ�d�G���-2O����b��=�e���<��_�%[�����n�(��/���> ȣ"����1�i����?�}�ȕ�7���$_fx������D�as� 
�_J|p��<�HmO_Դ�D��Εu,�?��(�������1�4T�C�K��T`у^����z�G�k�a���%�����1�x�i�������:߄���]]�-m���\��}��o���<C������Z��7���1�#�������C/i��إ�}��{���C'���:���*���H����/���>���k?���ޟs���Q�}������C��>���k*�� {�GM�]������ju(T��i��tW���O���ּ/��W?�f�����q]cÇ�ޥ��U�j|�E}�S�y�j���/��?���q�A��T��j�>y��������|7��7?�f���|@��b������[email protected]�_Y��7>%j?�u� �����"��_�J����������Z����[�;�w����u��"ո���f�����u�ȴ��O��Wݱ��2M�Ğ�o�����Ø�4�������JF^�ρ����J�����������}��"Tr��~4ę>%��_��%0���|�6���P��C�`�����߅���"��t�ſ�|���_��Rޟs�}�������I�[����?�u�ȴã�/���������Z���|E�����:7���^ �����E���{��/��}��"ӹ��)�>�F�������_�}��"՘�����L�x��}�Ȕ�)�>�����_Ҿ���;�d������}�ȴÞ>2���O����Z�F/�a������*5����K��Tڅ��kRu^��Z�a��xO�<!���"���6�M&�-R��[�ֵ/�� 
��T���xWɰ�o 

Как я могу загрузить изображение и получить его данные с PHP/Laravel?

+1

Это происходит потому, что вы doumping изображения. Сохраните изображение в своем веб-хранилище и получите доступ к нему по его пути. Вы на полпути – Gayan

ответ

0

Вы не можете просто echo изображение, подобное тому, которое вы бы сделали с текстом, вы должны сообщить браузеру, что вы даете ему изображение, чтобы он знал, как с этим справиться.

Кроме того, когда вы делаете file_get_contents, вы получите исходные данные в виде строки, так что вы не можете назвать $image->getClientOriginalName()

То, что вы должны сделать, это отправить заголовок в браузере с типом изображения, а затем эхо данные изображения.

// get the media 
$info = Oembed::get($externalMedia); 
$image = file_get_contents($info->image); 

$imageInfo = getimagesizefromstring($image); 
$width = $imageInfo[0]; 
$height = $imageInfo[1]; 

if ($width > 100 && $height > 100) { 
    // save image to file 
    file_put_contents($newfilename, $image) 
} 

// send to the browser 
return response($image, 200)->header('Content-Type', $imageInfo['mime']); 

getimagesizefromstring() возвращает ширину, высоту и мим типа из двоичной строки

+0

Но я хотел бы сделать это, прежде чем загружать что-нибудь, как я могу это сделать? – Leff

+0

@Leff вы просто хотите сохранить файл с URL-адреса? –

+0

Да, я просто хочу сохранить изображение на сервере, но до этого я хотел бы проверить, существует ли миниатюра youtube maxresult. Поэтому я решил сначала проверить размер изображения, так что, если он низкий, я не загружаю его, так как это не будет миниатюрами maxresult. Не уверен ни в каком другом способе достижения этого – Leff

Смежные вопросы