我正在尝试将图像从特定网站下载到我自己的服务器上
....
public function save_one_img($img_url,$image_filename=false,$save_path)
{
$pathinfo = pathinfo($img_url);
$pic_name=$pathinfo['basename'];
if ($image_filename) $pic_name = $image_filename.'.'.$pathinfo['extension'];
$img_data = @file_get_contents($img_url);
$img_size = file_put_contents($save_path . $pic_name, $img_data);
if ($img_size)
{
echo $img_url . '<span style="color:green;margin-left:80px">success</span><br/>';
} else
{
echo $img_url . '<span style="color:red;margin-left:80px">failed</span><br/>';
}
}
当图像的URL正常时,它可以正常工作。但是,当它类似于“ http://s10.sinaimg.cn/orignal/001MEJWgzy7t10HVWDT39”时,该代码将无法获得正确的文件扩展名。但是,当我打开页面并右键单击该图像以下载它时,我可以看到它是gif
。因此,在这种情况下,如何在代码中获取扩展名?
答案 0 :(得分:1)
您可以下载图像并使用exif_imagetype检测图像类型,也可以在远程主机(从中获取图像的主机)的响应标头中读取图像类型。标头中有一个名为 Content-Type 的属性,您可以在其中获取图像的类型。
exem_imagetype 的示例:
<?php
if (exif_imagetype('image.gif') != IMAGETYPE_GIF) {
echo 'The picture is not a gif';
}
?>
这是png文件标题响应的示例。
HTTP/1.1 200 OK
Date: Wed, 15 May 2019 02:42:16 GMT
Server: Apache/2.4.39 (Ubuntu)
Last-Modified: Fri, 22 Mar 2019 17:34:11 GMT
ETag: "19f85-584b2434b434b"
Accept-Ranges: bytes
Content-Length: 106373
Keep-Alive: timeout=5, max=100
Connection: Keep-Alive
Content-Type: image/png <---------------