Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/image/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何获取图像';通过URL隐藏扩展名?_Php_Image_Web Scraping - Fatal编程技术网

Php 如何获取图像';通过URL隐藏扩展名?

Php 如何获取图像';通过URL隐藏扩展名?,php,image,web-scraping,Php,Image,Web Scraping,我正在尝试将图像从特定网站下载到我自己的服务器 .... 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[

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

....

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

}
。。。。
公共函数save\u one\u img($img\u url,$image\u filename=false,$save\u path)
{
$pathinfo=pathinfo($img\u url);
$pic_name=$pathinfo['basename'];
如果($image_filename)$pic_name=$image_filename...$pathinfo['extension'];
$img\u data=@file\u get\u contents($img\u url);
$img\u size=文件内容($save\u path.$pic\u name,$img\u data);
如果($img\u尺寸)
{
echo$img_url.“成功
”; }否则 { echo$img_url。“失败
”; } }

当图像的URL正常时,它工作正常。但当它类似于“”时,代码将无法获得正确的文件扩展名。但当我打开页面并右键单击图像下载它时,我可以看到它是
gif
。因此,在这种情况下,如何在代码中获取扩展名?

您可以下载映像并使用来检测映像类型,或者可以在远程主机(从中获取映像的主机)的响应头中读取映像类型。在标题中有一个名为Content Type的属性,您可以从中获取图像的类型

exif_imagetype的示例:


下面是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     <---------------
HTTP/1.1200正常
日期:2019年5月15日星期三02:42:16 GMT
服务器:Apache/2.4.39(Ubuntu)
最后修改:2019年3月22日星期五17:34:11 GMT
ETag:“19f85-584b2434b434b”
接受范围:字节
内容长度:106373
保持活动状态:超时=5,最大=100
连接:保持活力
内容类型:image/png
mime\u Content\u Type()
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     <---------------