PHP获取mimetype不工作的文档

时间:2014-01-19 16:48:46

标签: php upload

我想只上传图片,文档说使用finfo_open。 http://www.php.net/manual/en/function.finfo-file.php

我这样做但是我收到了这个错误:

  

致命错误:调用未定义的函数finfo_open()   第83行的C:\ xampp \ htdocs \ ticket \ index.php调用堆栈

     

时间记忆功能位置1 2.2551 158752 {main}().. \ index.php:0

PHP:

if(isset($_FILES['file'])) {
    $finfo = finfo_open(FILEINFO_MIME_TYPE); 
    $ext = finfo_file($finfo, $_FILES['file']['name']); << LINE 84
       if(substr($ext, 0, 5) != 'image') {
          $errors[] = 'Kon dit bestand type niet uploaden.';
       }
}

为什么这不起作用?

更新:

通过设置extension = php_fileinfo.dll激活我现在得到这个:

  

警告:finfo_file(download.jpg):无法打开流:没有这样的文件   或第84行的C:\ xampp \ htdocs \ ticket \ index.php中的目录或调用堆栈

     

时间记忆功能位置1 2.2531 158448 {main}().. \ index.php:0 2 3.2572 180560 finfo_file().. \ index.php:84

1 个答案:

答案 0 :(得分:0)

PHP 5.3.0及更高版本内置了Fileinfo,但在Windows上,您必须在php.ini中手动启用它

查看你的php.ini文件并检查fileinfo.so或php_fileinfo.dll是否已激活(取决于你的平台和版本)。

应该有类似于

的行
extension = fileinfo.so
在Windows上

extension = fileinfo.dll

在你的php.ini文件中

更新后

使用$_FILES ['file'] ['tmp_name']作为路径(finfo_file()需要路径!)

if(isset($_FILES['file'])) {
    $finfo = finfo_open(FILEINFO_MIME_TYPE); 
    $ext = finfo_file($finfo, $_FILES['file']['tmp_name']);

    if(substr($ext, 0, 5) != 'image') {
       $errors[] = 'Kon dit bestand type niet uploaden.';
    }
}