如何确定php上传的文件扩展名?

时间:2012-02-22 08:21:40

标签: php file-upload

我读过有关MIMEfinfo()的内容,但我不明白!

我也试过这些:

if ($_FILES["uploadedFile"]["type"] == "text/docx"/*or == document/docx*/)
    echo "1";

显然它不起作用。 当我echo $_FILES['uploadedFile']['type'];然后我看到这个单词文档(我的服务器是Linux):

application/vnd.openxmlformats-officedocument.wordprocessingml.document

我必须使用:?

    if ($_FILES["uploadedFile"]["type"] == "application/vnd.openxmlformats-officedocument.wordprocessingml.document")

查找文件扩展名(不仅是图片)的简单可靠方法是什么? (我的意思是使用一些未在客户端填充的变量)

3 个答案:

答案 0 :(得分:3)

如果你使用的是php 5.3,你可以获得 true mime-type:

$finfo = finfo_open();
$file = $_FILES["uploadedFile"];
finfo_file($finfo, $file, FILEINFO_MIME_TYPE);
finfo_close($finfo);

更多信息:

答案 1 :(得分:2)

怎么样

$file = $_FILES['uploadedFile'['name'];
$pathparts = pathinfo($file);
$ext = $pathparts['extension'];

这将为您提供实际的文件扩展名。

答案 2 :(得分:0)

确定文件类型的最佳方法是检查文件的前几个字节 - 称为“魔术字节”。 Magic字节本质上是签名,文件头中或文件末尾的长度在2到40个字节之间变化。

你最好的选择是PECL扩展名为Fileinfo

PHP 5.3 开始,Fileinfo附带主发行版并默认启用

// in PHP 4 :
$fhandle = finfo_open(FILEINFO_MIME);
$mime_type = finfo_file($fhandle,$file); // e.g. gives for example "image/jpeg" for a jpeg file

// in PHP 5 you can do :

$file_info = new finfo(FILEINFO_MIME);  // object oriented approach!
$mime_type = $file_info->buffer(file_get_contents($file));