为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

PHP
慕运维8079593 2021-06-11 10:24:24
我正在尝试将图像从特定网站下载到我自己的服务器....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. 那么在这种情况下,如何在我的代码中获取扩展名?
查看完整描述

1 回答

?
Helenr

TA贡献1780条经验 获得超4个赞

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


exif_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     <---------------


查看完整回答
反对 回复 2021-06-19
  • 1 回答
  • 0 关注
  • 122 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信