14

我想要上传图片扩展。

据我所知,最好的方法是getimagesize()功能。

但是这个函数的哑剧,image/jpeg当图像有.jpg或也有.JPEG扩展名时返回。

如何才能得到确切的扩展?

4

9 回答 9

32

您可以将image_type_to_extension函数与返回的图像类型一起使用getimagesize

$info = getimagesize($path);
$extension = image_type_to_extension($info[2]);
于 2013-02-07T08:21:31.360 回答
30
$ext = pathinfo($filename, PATHINFO_EXTENSION);
于 2013-02-07T08:16:52.830 回答
6

您还可以使用 strrpos 和 substr 函数来获取任何文件的扩展名

$filePath="images/ajax-loader.gif";

$type=substr($filePath,strrpos($filePath,'.')+1);

echo "file type=".$type;

输出:gif

如果你想要像 .gif 这样的扩展名

$type=substr($filePath,strrpos($filePath,'.')+0);

输出:.gif

于 2013-02-07T12:54:50.387 回答
4
$image = explode(".","test.file.hhh.kkk.jpg");
echo end($image);
于 2013-02-07T08:19:03.747 回答
3

另一种方法:

$ext = strrchr($filename, "."); // .jpg
于 2013-02-07T08:21:59.880 回答
1
$file_ext = pathinfo($_FILES["file"]["name"], PATHINFO_EXTENSION);

或者让它变得干净

$filename= $_FILES["file"]["name"];
$file_ext = pathinfo($filename,PATHINFO_EXTENSION);
于 2018-02-18T10:51:20.743 回答
0

你也可以用点来分解文件名,并把数组的结尾取为如下:

$ext = end(explode('.', 'image.name.gif'));

根据:在PHP中查找文件扩展名的两种不同方法

还有一种新方法,哈哈:

$ext = explode('.', 'file.name.lol.lolz.jpg');
echo $ext[count($ext) - 1];
于 2013-02-07T08:29:06.880 回答
0

对于那些想要检查图像类型是 JPEG、PNG 等的人,您可以使用exif_imagetype函数。此函数读取图像的第一个字节并检查其签名。这是一个来自 php.net 的简单示例:

<?php
if (exif_imagetype('image.gif') != IMAGETYPE_GIF) {
   echo 'The picture is not a gif';
}
?>
于 2016-04-11T08:31:44.543 回答
0
$size = getimagesize($filename);
$ext = explode('/', $size['mime'])[1];
于 2016-09-07T03:54:10.573 回答