我正在尝试将图像从特定网站下载到我自己的服务器....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 <---------------
- 1 回答
- 0 关注
- 122 浏览
添加回答
举报
0/150
提交
取消