如何通过 URL 获取图像的隐藏扩展名?

我正在尝试将图像从特定网站下载到我自己的服务器


....


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/>';

    }


}

当图片的网址正常时,它工作正常。但是当它是类似“ http://s10.sinaimg.cn/orignal/001MEJWgzy7t10HVWDT39 ”时,代码将无法获得正确的文件扩展名。但是当我打开页面并右键单击图像下载它时,我可以看到它是gif. 那么在这种情况下,如何在我的代码中获取扩展名?


慕运维8079593
浏览 123回答 1
1回答

Helenr

您可以下载图像并使用exif_imagetype来检测图像类型,或者您可以在远程主机(您从中获取图像的主机)的响应头中读取图像类型。在标题中有一个名为Content-Type的属性,您可以在那里获取图像的类型。exif_imagetype示例:<?phpif (exif_imagetype('image.gif') != IMAGETYPE_GIF) {&nbsp; &nbsp; echo 'The picture is not a gif';}?>这是 png 文件的标头响应示例。HTTP/1.1 200 OKDate: Wed, 15 May 2019 02:42:16 GMTServer: Apache/2.4.39 (Ubuntu)Last-Modified: Fri, 22 Mar 2019 17:34:11 GMTETag: "19f85-584b2434b434b"Accept-Ranges: bytesContent-Length: 106373Keep-Alive: timeout=5, max=100Connection: Keep-AliveContent-Type: image/png&nbsp; &nbsp; &nbsp;<---------------
打开App,查看更多内容
随时随地看视频慕课网APP