非法偏移类型

时间:2010-02-02 23:07:08

标签: php arrays file-upload

我无法通过php上传文件。我在流程开始时检查文件类型,然后出错。

这是我得到的错误:

  

警告:非法偏移类型   /balblabla/DBfunctions.inc.php在线   183

这是打印出的$ _FILES var

  
    

数组([Picture] =>数组([name] =>     JPG.jpg [type] =>图像/ JPEG     [tmp_name] => / tmp / phpHlrNY8 [错误]     => 0 [size] => 192221))

  

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

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

这是调用函数

的代码行
  

if(checkFile($ _FILES ['Picture'],array(“image / jpeg”))== true){
  //做的东西
  } //结束如果

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

2 个答案:

答案 0 :(得分:8)

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

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

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

if( in_array($file['type'], $type) )

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

if( checkFile('Picture', array("image/jpeg") ) == true )

任何改变都可行。

答案 1 :(得分:1)

checkFile()中使用$_FILES[$file]替换$file。您要将$_FILES数组编入索引两次。