使用PHP检测上传的文件类型

时间:2014-02-28 03:07:17

标签: php file upload

我注意到,对于同一个文件,$_FILES['file']['type']会有所不同,具体取决于您是从Windows客户端还是Mac客户端上传。

我在服务器端使用PHP。我怎样才能完全确定文件类型?

1 个答案:

答案 0 :(得分:0)

已经给出了一些答案,例如: :https://stackoverflow.com/a/6755263/80353

我想明确说明我找到的最佳方式。

1)安装finfo库

http://us1.php.net/manual/en/fileinfo.installation.php

2)使用$ _FILES ['file'] ['tmp_name']

上的finfo函数

下面是我用来检测zip文件的函数。

/**
 * Detect from the $_FILES['file'] array
 *
 * @param Array $data is the $_FILES['file']  array
 * @return boolean Return true if uploaded file is a zip file
 */
public function isZip($data = null) {
    if ($data == null) {
       $data = $_FILES['file'];
    }
    $tmpname = $data['tmp_name'];
    $finfo = finfo_open(FILEINFO_MIME_TYPE);
    $mimetype = finfo_file($finfo, $tmpname);
    if($mimetype == 'application/zip') {
        return true;
    }
    return false;
}

我希望能够阻止其他PHP开发人员犯同样的错误并花费2个小时进行故障排除。