非法偏移类型

BFT*_*ick 12 php arrays file-upload

我无法通过php上传文件.我在流程开始时检查文件类型,但是出现错误.

这是我得到的错误:

警告:第183行/balblabla/DBfunctions.inc.php中的非法偏移类型

这是打印出的$ _FILES var

数组([Picture] =>数组([名称] => JPG.jpg [类型] =>图像/ jpeg [tmp_name] =>/tmp/phpHlrNY8 [错误] => 0 [尺寸] => 192221))

以下是我正在使用的代码段,它给了我一些问题:

function checkFile($file, $type)
{
    if( in_array($_FILES[$file]['type'], $type) ){    //   <---  LINE 183
        return true;
    }//if
    return false;
} // end checkFile()
Run Code Online (Sandbox Code Playgroud)

这是调用函数的代码行

if(checkFile($ _FILES ['Picture'],array("image/jpeg"))== true){
// do stuff
} //结束if

我在我自己的服务器上的几十个网站上使用了这段代码,所以我猜这是一些不同的配置选项.如何修改我的代码,以便它可以在这个不同的服务器上运行?

Soa*_*Box 8

您正在向checkFile函数传递数组,而不是字符串/整数索引.

要解决此问题,请执行以下操作之一进行更改:

更改checkfile以便它使用传入的数组进行检查,因此:

if( in_array($file['type'], $type) )
Run Code Online (Sandbox Code Playgroud)

或者更改调用此函数的代码,以便它传递文件的名称以用作索引而不是文件数组,因此:

if( checkFile('Picture', array("image/jpeg") ) == true )
Run Code Online (Sandbox Code Playgroud)

要么改变都会有效.


use*_*291 2

checkFile()替换为.$_FILES[$file]$file您对$_FILES数组进行了两次索引。