2016-12-31 17 views
-1

私が苦労しているコードに問題があります。私はこのエラーの原因を突き止めることはできません。array_keys()は、パラメータ1が配列であることを予期しています。

私はCMSでアップロードフォームを作成しました。 9枚の写真をアップロードすると、うまく動作します。私は9つのファイルを超えてアップロードする場合、それは私に、このエラーを与える:

array_keys() expects parameter 1 to be array, null given in C:...upload.php on line 18 

は、誰かが私を助けることはできますか?

コード:

$file_ary = reArrayFiles($_FILES['ufile']); 
    //Reorganising the $_FILES: 

    function reArrayFiles(&$file_post) { 

     $file_ary = array(); 
     $file_count = count($file_post['name']); 
     $file_keys = array_keys($file_post); 

     for ($i=0; $i<$file_count; $i++) { 
      foreach ($file_keys as $key) { 
       $file_ary[$i][$key] = $file_post[$key][$i]; 
      } 
     } 

     return $file_ary; 
    } 


    foreach ($file_ary as $file) { 
     $dir = "imgs/" . $last_fotoid . "/"; 

     if (!file_exists($dir)) { 
     mkdir("imgs/" . $last_fotoid . "/"); 
     } 


     $target_file = $dir . basename($file["name"]); 

     move_uploaded_file($file["tmp_name"], $target_file); 

} 

マイ形式:

<form method="post" action="upload.php" enctype="multipart/form-data"> 
      Select image to upload:<br> 
      <input type="file" name="ufile[]" multiple> 
      <input type="submit" value="Upload Image" name="submit"> 
</form> 
+1

コピーしたコードはあまり役に立ちません。しかし、基本的には、** reArrayFiles **メソッドを呼び出すときに配列 – Ali

+0

$ _FILES ['ufile']を呼び出すときに配列を確認する必要があります。 – laurensvanheerde

+0

が正しく動作するはずです。あなたが投稿したコードを見ることはできません。 – Ali

答えて

0

エラーが明確$file_keys = array_keys($file_post);指さので、ふてくされてあなたがreArrayFiles()メソッドを呼び出しますが、null引数を指定している場合があります期待される配列(この場合はファイル)の代わりに。メソッドに渡す前に値$_FILES['ufile']をチェックすることでこれを確認できます。

フォームを含むページを訪れているときにこれが起こりますか?またはフォームを送信するときにのみ発生しますか?完全なコードが表示されていないのは%100ではありませんが、フォームの結果としてというPOST要求の場合にのみ、コードを実行するのを忘れてしまったと思います。

基本的には、予想されるファイルを受け取ったときにのみプロセスを開始するようにしてください。

+0

このコードは、9つのファイルをアップロードしているときに正常に動作します。それを超えて、私はこのエラーメッセージを受け取ります。ファイルもアップロードされていません。 – laurensvanheerde

+0

デモを公開して試してみたところ、同じエラーを再現することができました。しかし、ファイルの数ではなく、大きなファイルを含めることによってアップロードプロセスに失敗したため – Ali

関連する問題