使用预构建的系统来抓取远程图像并将其保存到服务器上。
目前,没有检查图像是否确实存在于该远程位置,并且它具有某种文件类型(jpg、jpeg、gif),我的任务是执行这两项操作。
我认为这非常简单,因为我只需使用一个简单的正则表达式和 getimagesize($image):
$remoteImageURL = 'http://www.exampledomain.com/images/image.jpg';
if(@getimagesize($remoteImageURL) && preg_match("/.(jpg|gif|jpeg)$/", $remoteImageURL) )
{
// insert the image yadda yadda.
}
当我无法控制从中获取图像的 url 时,就会出现问题,例如:
http://www.exampledomain.com/images/2?num=1 http://www.exampledomain.com/images/2?num=1
所以当谈到这个时,正则表达式和 getimagesize() 都会失败,有没有更好的方法来做到这一点?
你可以做
$headers = get_headers( 'http://www.exampledomain.com/images/2?num=1' );
The $headers
变量将包含类似的内容
Array
(
[0] => HTTP/1.1 200 OK
[1] => Date: Thu, 14 Oct 2010 09:46:18 GMT
[2] => Server: Apache/2.2
[3] => Last-Modified: Sat, 07 Feb 2009 16:31:04 GMT
[4] => ETag: "340011c-3614-46256a9e66200"
[5] => Accept-Ranges: bytes
[6] => Content-Length: 13844
[7] => Vary: User-Agent
[8] => Expires: Thu, 15 Apr 2020 20:00:00 GMT
[9] => Connection: close
[10] => Content-Type: image/png
)
这将告诉您资源是否存在以及它是什么内容类型(不一定也是图像类型)。
EDIT根据佩卡的评论,您可能仍然想在下载后确定它的哑剧类型。看
-
如何检查文件是MP3还是图像文件 https://stackoverflow.com/questions/2006632/php-how-can-i-check-if-a-file-is-mp3-or-image-file/2006664#2006664.
一些给定的方法也适用于远程文件,因此您可能可以跳过get_headers
完全预检查。请自行决定哪一款适合您的需求。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)