2012-08-31 108 views
0

我想知道如何让PHP检查它有什么扩展,然后执行代码。例如,让我们看看它是一个.mp3文件,然后执行:echo'这是一个mp3文件'。当然不是那个代码 - 但更先进。无论如何,有什么想法等?用PHP检查文件扩展名

+4

你真的想要的文件扩展名?还是内容类型? – Brad

回答

1

有多种方法可以做到这一点。如果你所做的只是检查mp3,只是爆炸的时间段,弹出最后一个,然后看看字符串是否相等。

例如:

$name = "song.mp3"; 
$parts = explode('.', $name); 
$extension = array_pop($parts); 
if($extension == 'mp3'){ 
    echo 'This is a mp3 file.'; 
} 

如果你检查各种各样的扩展,他们被上传使用

$_FILES['file']['type']; 
+0

当文件名包含一个点时,这将不起作用。就像这个文件名一样,它会失败“my.test.txt” –

+0

是的,它会导致你删除最后一个扩展元素array_pop。我试了一下,它的工作,但试试看,如果我错了,让我知道。 – Phil

2

使用pathinfo() function到文件的扩展名分离,然后使用if语句中的值。

+0

如果文件正在上传,这项工作是否可行?由于上传文件没有扩展名(我通常看起来像这样tmp_name =>/tmp/php8Nxotq)。 – Phil

+0

谢谢。现在几乎已经有了。 我该怎么做这样pathinfo(PHP)会检查一个目录? – user1622951

+0

'echo“{mp3:\”music/$ file_name \“,ogg:\”musicogg/$ path_parts \“.ogg}”;' 其中$ file_name正在查看音乐目录(并且完全按照它的工作原理),现在我想要它从音乐目录中获得的名称,并将代码的最后部分放在一个.ogg扩展名中。或者它将查看musicogg目录并检查文件是否存在。有点失落了。 – user1622951

0

您可以使用filetype()$_FILES[$file][type]来获得文件类型 。

1

检查这两个选项来做到这一点:

$filename = 'music.mp3' 
$ext = substr(strrchr($filename, '.'), 1); 

$filename = 'music.mp3'; 
$ext = pathinfo($filename, PATHINFO_EXTENSION); 

希望它能帮助:)

0

试试这个

$file_name = "test.txt"; 
    $extension = pathinfo($file_name); 
    echo "Your file extension is ".$extension ['extension']; 
0

如果要正确检测文件的类型,使用Fileinfo

例撕开了PHP的评论:

<?php 
$fi = new finfo(FILEINFO_MIME,'/usr/share/file/magic'); 
$mime_type = $fi->buffer(file_get_contents($file));