通过 CURL PHP 下载图像文件
要从 URL 获取和保存图像文件,CURL PHP 提供了一个方便的解决方案。但是,某些编码问题可能会阻碍您的尝试。让我们剖析一下这段代码:
function GetImageFromUrl($link) { $ch = curl_init(); curl_setopt($ch, CURLOPT_POST, 0); curl_setopt($ch, CURLOPT_URL, $link); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); $result = curl_exec($ch); curl_close($ch); return $result; } $sourcecode = GetImageFromUrl($iticon); $savefile = fopen(' /img/uploads/' . $iconfilename, 'w'); fwrite($savefile, $sourcecode); fclose($savefile);
问题和解决方案:
不正确的文件路径:
文件保存语句路径中错误地包含空格 (' ')。将其替换为:
$savefile = fopen('img/uploads/' . $iconfilename, 'w');
缺少的功能:
代码获取图像但不考虑二进制数据。为了确保正确保存图像,请添加:
curl_setopt($ch, CURLOPT_BINARYTRANSFER, 1);
覆盖现有文件:
该代码会覆盖任何现有的同名文件。为了避免这种情况,请使用:
if (file_exists($savefile)) { unlink($savefile); }
优化代码:
function grab_image($url, $saveto) { $ch = curl_init($url); curl_setopt($ch, CURLOPT_HEADER, 0); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_BINARYTRANSFER, 1); $raw = curl_exec($ch); curl_close($ch); if (file_exists($saveto)) { unlink($saveto); } $fp = fopen($saveto, 'x'); fwrite($fp, $raw); fclose($fp); }
附加说明:
在你的 PHP 配置文件中(php.ini),确保启用了allow_url_fopen。
以上是如何在PHP中使用cURL高效下载和保存图片?的详细内容。更多信息请关注PHP中文网其他相关文章!