在我们日常的开发中,经常需要用到判断图片是否存在,存在则显示,不存在则显示默认图片,那么我们怎么判断呢?

getimagesize()函数(推荐学习:PHP编程从入门到精通)
getimagesize 函数并不属于 GD 扩展的部分,标准安装的 PHP 都可以使用这个函数。可以先看看这个函数的文档描述:
http://php.net/manual/zh/function.getimagesize.php
如果指定的文件如果不是有效的图像,会返回 false,返回数据中也有表示文档类型的字段。如果不用来获取文件的大小而是使用它来判断上传文件是否是图片文件,看起来似乎是个很不错的方案,当然这需要屏蔽掉可能产生的警告,比如代码这样写:
立即学习“PHP免费学习笔记(深入)”;
<?php
$filesize = @getimagesize('/path/to/image.png');
if ($filesize) {
do_upload();
}
# 另外需要注意的是,你不可以像下面这样写:
# if ($filesize[2] == 0)
# 因为 $filesize[2] 可能是 1 到 16 之间的整数,但却绝对不对是0。但是如果你仅仅是做了这样的验证,那么很不幸,你成功的在代码里种下了一个 webshell 的隐患。
诚客在线考试是由南宁诚客网络科技有限公司开发的一款手机移动端的答题网站软件,它应用广泛适合各种学校、培训班、教育机构、公司企业、事业单位、各种社会团体、银行证券等用于学生学习刷题、员工内部培训,学员考核、员工对公司制度政策的学习……可使用的题型有:单选题、多选题、判断题支持文字,图片,音频,视频、数学公式。可以设置考试时间,答题时间,考试次数,是否需要补考,是否可以看到自己成绩。练习模式,支持学生
0
要分析这个问题,我们先来看一下这个函数的原型:
static void php_getimagesize_from_stream(php_stream *stream, zval **info, INTERNAL_FUNCTION_PARAMETERS){
...
itype = php_getimagetype(stream, NULL TSRMLS_CC); switch( itype) {
...
}
...
}static void php_getimagesize_from_any(INTERNAL_FUNCTION_PARAMETERS, int mode) {
...
php_getimagesize_from_stream(stream, info, INTERNAL_FUNCTION_PARAM_PASSTHRU);
php_stream_close(stream);
}
PHP_FUNCTION(getimagesize)
{
php_getimagesize_from_any(INTERNAL_FUNCTION_PARAM_PASSTHRU, FROM_PATH);
}限于篇幅上面隐藏了一些细节,现在从上面的代码中我们知道两件事情就够了:
最终处理的函数是 php_getimagesize_from_stream
负责判断文件类型的函数是 php_getimagetype
接下来看一下 php_getimagetype 的实现:
PHPAPI int php_getimagetype(php_stream * stream, char *filetype TSRMLS_DC){
... if (!memcmp(filetype, php_sig_gif, 3)) { return IMAGE_FILETYPE_GIF;
} else if (!memcmp(filetype, php_sig_jpg, 3)) { return IMAGE_FILETYPE_JPEG;
} else if (!memcmp(filetype, php_sig_png, 3)) {
...
}
}以上就是php判断图片是否存在的详细内容,更多请关注php中文网其它相关文章!
PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号