我正在尝试检查用户输入的链接是否是有效图像。我尝试使用函数getimagesize()
来做到这一点,然后如果函数抛出错误,那么它就不是有效的图像。
由于某种原因,try-catch语句不起作用。我也尝试使用函数file_exist()
,但是当我输入正常的图像链接时,它表示它不是有效的图像。我该如何解决这个问题?
尝试1:
if ($link and file_exists($link))
{
echo "valid image!"
}
尝试2:
$link = $_POST['link'];
try
{
getimagesize($link);
}
catch(Exception $e)
{
echo "worng image! enter again link.";
}
答案 0 :(得分:2)
并非PHP中的所有函数都会生成异常。其中许多内容(包括getimagesize
)都会产生错误。文档将在“返回值”和“错误/例外”部分告诉您:https://secure.php.net/manual/en/function.getimagesize.php
相反,您应该检查getimagesize
的返回值 - 如果它是FALSE
,那么它就失败了。否则你会得到一个数组。
答案 1 :(得分:0)
建议不要将getimagesize用于此目的。这来自documentation:
<强>注意强> 此函数要求filename是有效的图像文件。如果提供了非图像文件,则可能会将其错误地检测为图像,并且该函数将成功返回,但该数组可能包含无意义的值。 请勿使用getimagesize()检查给定文件是否为有效图片。使用专用解决方案,例如Fileinfo扩展名。