我想只上传图片,文档说使用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
答案 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.';
}
}