【问题标题】:Get Image Data in in PHP or Laravel From URL在 PHP 或 Laravel 中从 URL 获取图像数据
【发布时间】:2021-11-21 00:32:13
【问题描述】:

我想读取文件数据,尤其是图像文件,但是图像已经上传到某个地方或服务器目录,而不是来自输入 html。我怎样才能得到这个?谢谢

$url = 'https://pbs.twimg.com/profile_images/805651234698842112/uPSrYOHT.jpg'

我想从输入 html 中获取与 $_FILES post 相同的文件数据相同

【问题讨论】:

  • 您的意思是您正在尝试将图像从另一个网站上传到您的网站?
  • 这可以很简单,甚至只使用file_get_contents 从您的服务器或外部(其他在线网站)获取文件数据。一些服务器可能会阻止使用流行的机器人名称识别自己的自动查询。可能需要设置适当的用户代理,在极端情况下,如果服务器在返回资源之前检查浏览器完整性,甚至可能无法进行编程检索。
  • @ArvinJasonCabrera 是的,因为我们公司有不同的服务器,并且想将图像 ID 卡传递到另一个服务器。我仍然不知道该怎么做,所以我在第一台服务器的表单中添加按钮下载身份证,以便我们的管理员可以下载并重新输入以将其发送到我们的第二台服务器

标签: php html laravel file multipartform-data


【解决方案1】:

你可以试试这个功能:

function download($url, $outputPath)
{
    set_time_limit(0);
    $fp = fopen($outputPath, 'w+');
    $ch = curl_init(str_replace(' ', '%20', $url));
    curl_setopt($ch, CURLOPT_TIMEOUT, 50);
    curl_setopt($ch, CURLOPT_FILE, $fp); 
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
    curl_exec($ch); 
    curl_close($ch);
    fclose($fp);
}

如果你想获取内容而不是存储到文件中,你可以使用这个函数:

function download($url)
{
    set_time_limit(0);
    $ch = curl_init(str_replace(' ', '%20', $url));
    curl_setopt($ch, CURLOPT_TIMEOUT, 50);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
    $data = curl_exec($ch); 
    curl_close($ch);
    return $data;
}

【讨论】:

  • 我们能否得到包含图像数据的可变结果并将其发送到另一台服务器?
  • 当然。我已经编辑了答案以满足这一需求。
  • �SWQ2�N4}sj�_��������� /1|�\Z��`!�cօ�����b�?j{\�s �R��L�B&��������W�U��}�O���p�p��4 ��M�
【解决方案2】:

尝试以下代码,您可能会获得所有必要的数据。

<?php

// Your code here!
$url = "https://pbs.twimg.com/profile_images/805651234698842112/uPSrYOHT.jpg";
$temp = tempnam(sys_get_temp_dir(), 'TMP_');
echo $temp; // output => C:\Windows\Temp\TMP2142.tmp

file_put_contents($temp, file_get_contents($url));

$content = file_get_contents($temp);

$size = getimagesize($temp);
$extension = image_type_to_extension($size[2]);
echo $content;
echo "<br>";
echo print_r($size); // output => Array ( [0] => 120 [1] => 120 [2] => 3 [3] => width="120" height="120" [bits] => 4 [mime] => image/png )

echo "<br>";
echo $extension; // output => .png

【讨论】:

  • 我没有尝试过,但我会尝试,希望它有效。非常感谢
  • @FGtaV 有用吗?
  • �SWQ2�N4}sj�_��������� /1|�\Z��`!�cօ�����b�?j{\�s �R��L�B&��������W�U��}�O���p�p��4 ��M�
  • 是的。它是文件内容。您应该将其存储到最终文件中。
  • @FGtaV 如果您觉得我的回答有帮助,您可以批准并投票给我的回答。这将鼓励我帮助他人。
猜你喜欢
  • 2013-07-20
  • 2015-04-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-10-30
相关资源
最近更新 更多