【问题标题】:Laravel 5.3 upload image from url and get image dataLaravel 5.3 从url上传图片并获取图片数据
【发布时间】:2017-06-02 21:49:16
【问题描述】:

我正在尝试在本地上传 youtube 缩略图并获取文件大小等数据。来自这样的链接:http://img.youtube.com/vi/bnRVheEpJG4/maxresdefault.jpg 我从 oembed 获取 url,如下所示:

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

dd($image->getClientOriginalName());

我只想将图像保存到服务器,但在此之前我想检查 youtube maxresdefault 缩略图是否存在。所以我想先检查图像大小,如果它很小,我就不上传它,因为那不是 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������3@3�_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 上传图片并获取数据?

【问题讨论】:

  • 那是因为你对图像进行了倾倒。将图像存储在您的网络存储中并通过其路径访问它。你已经成功了一半

标签: php image laravel url upload


【解决方案1】:

你不能像处理一些文本那样只echo一个图像,你必须通知浏览器你给他一个图像,这样他就会知道如何处理它。

此外,当您执行file_get_contents 时,您会以字符串形式获取原始数据,因此您无法调用$image-&gt;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() 从二进制字符串返回宽度、高度和 mime 类型

【讨论】:

  • 但是我想在上传任何东西之前这样做,我该怎么做?
  • @Leff 你只是想从 url 保存文件?
  • 是的,我只想将图像保存到服务器,但在此之前我想检查 youtube maxresult 缩略图是否存在。所以我想先检查图像大小,如果它很小,我就不上传它,因为那不是一个 maxresult 缩略图。不确定有任何其他方法可以实现这一目标
  • 当我尝试使用你的代码时,我得到了 Class 'App\Http\Controllers\Admin\Articles\finfo' not found
  • 查看我的编辑,它不再使用 finfo。 finfo需要在php.ini中激活php.net/manual/en/fileinfo.installation.php
猜你喜欢
  • 2017-09-19
  • 2023-04-04
  • 2017-03-13
  • 1970-01-01
  • 2017-06-04
  • 1970-01-01
  • 1970-01-01
  • 2017-04-16
  • 2020-06-05
相关资源
最近更新 更多