Недопустимый тип смещения - PullRequest
12 голосов
/ 03 февраля 2010

У меня проблемы с загрузкой файла через php.Я проверяю тип файла в начале процесса и получаю ошибку.

Это ошибка, которую я получаю:

Предупреждение: недопустимый тип смещения в / balblabla / DBfunctions.inc.php в строке 183

Это распечатанный $ _FILES var

Array ([Picture] => Array ([name] =>JPG.jpg [type] => image / jpeg [tmp_name] => / tmp / phpHlrNY8 [error] => 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) {
// do stuff
} // end, если

Я использовал этот фрагмент кода на десятках веб-сайтовна моем собственном сервере, поэтому я предполагаю, что это какой-то другой вариант конфигурации.Как я могу изменить свой код, чтобы он работал на этом другом сервере?

Ответы [ 2 ]

8 голосов
/ 03 февраля 2010

Вы передаете массив, а не строковый / целочисленный индекс вашей функции checkFile.

Чтобы это исправить, внесите одно из следующих изменений:

Измените контрольный файл, чтобы он использовал переданный массив для проверки, таким образом:

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

ИЛИ измените код, который вызывает эту функцию, чтобы он передавал имя файла для использования в качестве индекса, а не массива файлов, таким образом:

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

Любое изменение будет работать.

1 голос
/ 03 февраля 2010

В checkFile() заменить $_FILES[$file] на $file. Вы индексируете массив $_FILES дважды.

...