web-dev-qa-db-ja.com

不正なオフセットタイプ

PHPを介してファイルをアップロードするのに問題があります。プロセスの開始時にファイルタイプを確認すると、エラーが発生します。

これは私が得ているエラーです:

警告:183行目の/balblabla/DBfunctions.inc.phpのオフセットタイプが無効です

これは印刷された$ _FILES変数です

配列([画像] =>配列([名前] => JPG.jpg [タイプ] => 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){
//何かをする
} //終了する場合

私は自分のサーバー上の数十のWebサイトでこのコードを使用したので、これはいくつかの異なる構成オプションであると推測しています。この別のサーバーで機能するようにコードを変更するにはどうすればよいですか?

12
BFTrick

文字列/整数インデックスではなく、配列をcheckFile関数に渡します。

これを修正するには、次のいずれかを変更します。

チェックファイルを変更して、渡された配列を使用してチェックを実行するようにします。

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

または、この関数を呼び出すコードを変更して、ファイル配列ではなくインデックスとして使用するファイルの名前を渡すようにします。

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

どちらの変更でも機能します。

8
SoapBox

checkFile()$_FILES[$file]$fileに置き換えます。 $_FILES配列に2回インデックスを付けています。

1
user187291