有没有办法在不编写扩展名的情况下获取图像的扩展名?
例如在下面的代码中,我必须写image.GIF才能知道它是GIF文件。
pathinfo('/testdir/dir2/image.gif', PATHINFO_EXTENSION);
答案 0 :(得分:1)
我总是用这个函数找出一个文件mime类型:
function validateMimeType($filePath, $extensions) {
$finfo = finfo_open(FILEINFO_MIME);
$mimeType = finfo_file($finfo, $filePath);
finfo_close($finfo);
return preg_match("/$extensions/i", $mimeType);
}
其中$ extensions是一个字符串,您可以在其中定义所需的格式,例如:
$extension = "jpg|jpeg|png";
答案 1 :(得分:0)
要确定它是否实际上是gif,您应该请求mimetype:
例如:
http://www.sanisoft.com/blog/2010/05/17/how-to-use-php-fileinfo-extension-to-get-file-mime-type/
答案 2 :(得分:0)
在包含值的情况的开关中使用exif_imagetype($ file_name)将获得ext,而不会在名称中使用它。
http://php.net/manual/en/function.exif-imagetype.php
实施例
$type = false;
switch(exif_imagetype($file_name)) {
case 1:
$type = 'gif';
break;
case 2:
$type = 'jpeg';
break;
case 3:
$type = 'png';
break;
}
答案 3 :(得分:0)
基本上没有。
如果有2张图片,image.gif和image.jpg,您会得到什么结果?您希望获得有关文件的信息,因此您必须使用其名称来调用该文件。扩展是名称的一部分。
您可以阅读目录的所有内容并过滤掉您想要的文件。
$dir = "/testdir/dir2";
foreach(scandir($dir) as $file)
{
if(is_dir($file) == false && $file != ".." && $file != ".")
{
var_dump(pathinfo(dir . '/' . $file, PATHINFO_EXTENSION));
}
}
Pathinfo用于简化将文件名拆分为扩展名和名称的过程。它不是确定文件类型,如果您知道硬编码的名称,为什么要将名称拆分为多个部分?
答案 4 :(得分:-1)
$ext = pathinfo($_FILES['image']['name'], PATHINFO_EXTENSION);
摆脱我的'自制啤酒代码',因为某种原因让我失败了。
以上代码可能会有所帮助吗?
每个人都是对的,PHP拥有自己的设备,而pathinfo应该可以正常工作。
供参考:
function get_file_extension($file_name) {
return substr(strrchr($file_name,'.'),1);
}
可以作为某种形式的替代品。在不知道要读取的文件的确切性质的情况下,很难给出确切的答案。