Недопустимый тип смещения
У меня возникли проблемы с загрузкой файла через php. Я проверяю тип файла в начале процесса и получаю сообщение об ошибке.
Это ошибка, которую я получаю:
Предупреждение. Недопустимый тип смещения в /balblabla/DBfunctions.inc.php on line 183
Это распечатанный файл $_FILES var
Массив ([Picture] = > Массив ([имя] = > JPG.jpg [type] = > image/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()
Это строка кода, вызывающая функцию
if (checkFile ($ _FILES ['Picture'], array ( "image/jpeg" )) == true) { // делать вещи
}//end if
Я использовал этот фрагмент кода на десятках сайтов на моем собственном сервере, поэтому я предполагаю, что это другой вариант конфигурации. Как я могу изменить свой код, чтобы он работал на этом другом сервере?
Ответы
Ответ 1
Вы передаете массив, а не индекс string/integer в вашу функцию checkFile
.
Чтобы исправить это, внесите одно из следующих изменений:
Измените контрольный файл, чтобы он использовал полученный массив для проверки:
if( in_array($file['type'], $type) )
ИЛИ измените код, вызывающий эту функцию, чтобы передать имя файла для использования в качестве индекса, а не массива файлов, таким образом:
if( checkFile('Picture', array("image/jpeg") ) == true )
Любое изменение будет работать.
Ответ 2
В checkFile()
замените $_FILES[$file]
на $file
. Вы индексируете массив $_FILES
дважды.