前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【黄啊码】如何使用PHP检查图像是否存在于远程服务器上

【黄啊码】如何使用PHP检查图像是否存在于远程服务器上

原创
作者头像
黄啊码
发布2022-06-10 10:30:34
2.2K0
发布2022-06-10 10:30:34
举报

众所周知,用PHP访问其他api接口,大都是用curl【当然,很多高级程序员瞧不上】,那么我们现在先用curl方式看看,代码简单如下:

代码语言:javascript
复制
function checkRemoteFile($url) { $ch = curl_init(); curl_setopt($ch, CURLOPT_URL,$url); // don't download content curl_setopt($ch, CURLOPT_NOBODY, 1); curl_setopt($ch, CURLOPT_FAILONERROR, 1); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); if(curl_exec($ch)!==FALSE) { return true; } else { return false; } } 

– >如果您的主机支持curl,这是最快的方式

像这样使用getimagesize()方法

代码语言:javascript
复制
 $external_link = 'http://www.example.com/example.jpg'; if (@getimagesize($external_link)) { echo “image exists “; } else { echo “image does not exist “; } 

这里没有“简单”的方法 – 至less,你需要生成一个HEAD请求,并检查生成的内容types,以确保它是一个图像。 这没有考虑到可能的引用问题。 curl是去这里的路。

你可以使用curl 。 只需将curl选项CURLOPT_NOBODY设置为true即可。 这将跳过身体信息,只有头部(因此也是http代码)。 然后,您可以使用CURLOPT_FAILONERROR将整个过程转换为真/假types检查

你可以使用getimagesize()

比如: http : //junal.wordpress.com/2008/07/22/checking-if-an-image-url-exist/

我一直在做我的房地产图片跟踪…

代码语言:javascript
复制
 $im = @imagecreatefromjpeg($pathtoimg); if($im) imagedestroy($im); // dont save, just ack... elseif(!$missing[$inum]) $img404arr[] = $inum; 

这似乎比下载实际的图像更快,从平均每100k的图像每个需要大约0.3秒。

我希望我可以做一个标题检查,并阅读是否我得到一个200对一个404没有下载任何东西。 任何人都有这个方便吗?

这可能是一个哑巴点,但这对我来说很有效:

代码语言:javascript
复制
 function is_webfile($webfile) { $fp = @fopen($webfile, "r"); if ($fp !== false) fclose($fp); return($fp); } 
复制代码

如果图像全部存在于相同的远程服务器上(或在同一networking中),则可以在该服务器上运行Web服务,以检查文件系统中的映像文件并返回一个bool值,指示该映像是否存在。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档