我遇到问题,检查天气图像是png,gif,jpg,jpeg。我尝试使用 getimagesize(文件路径),但它需要完整的图像路径,因为我只有 image1.jpg 的图像名称。我想在上传之前检查png,gif,jpg,jpeg的文件类型。我想要一个代码来检查类型,然后再将其上传到目录。 getimagesize(文件路径)让我警告无法打开流因为efile不在目录中,它还没有上传。我找不到任何对我有用的东西。这里的任何人都可以帮助我摆脱这个问题。这是我的代码:
list(image_width, image_height, image_type) = getimagesize("image1.jpg");
switch ($source_image_type)
{
case IMAGETYPE_GIF:
//some code here
break;
case IMAGETYPE_JPEG:
//some code here
break;
case IMAGETYPE_PNG:
//some code here
break;
}
此代码向我发出警告,无法打开流。
答案 0 :(得分:0)
答案 1 :(得分:0)
在php手册中有一个内置函数来获取图像类型,你可以使用exif_imagetype()
做你想做的事情,
int exif_imagetype ( string $filename )
if (exif_imagetype('image.gif') != IMAGETYPE_GIF) {
echo 'The picture is not a gif';
}
Windows用户:如果您收到致命错误“致命错误:调用未定义函数exif_imagetype()”,并且您启用了php_exif.dll,请确保启用php_mbstring.dll。你必须在php.ini中的exif之前放入mbstring,即:
extension=php_mbstring.dll
extension=php_exif.dll
您可以通过调用phpinfo()并搜索exif来检查这是否有效。 如果函数exif_imagetype()不可用, 您可以尝试以下解决方法:
if ( ! function_exists( 'exif_imagetype' ) ) {
function exif_imagetype ( $filename ) {
if ( ( list($width, $height, $type, $attr) = getimagesize( $filename ) ) !== false ) {
return $type;
}
return false;
}
}
如果您想在上传图片前进行检查,可以使用
if($_FILES['file_upload']['type'] != 'image/png'){
die('Unsupported filetype uploaded.');
}