2011-11-18 52 views
0

我以前多次使用過下面的代碼,並且最近發現它再次嘗試和使用。現在似乎有一個我無法修復的錯誤,任何人都可以看到我做錯了什麼?多個文件上傳foreach錯誤

foreach ($_FILES['image']['name'] as $i => $name) {  

    $uploadfile = $uploaddir . basename($name); 

    if (!move_uploaded_file($file_post["tmp_name"][$i],$uploadfile)) 
    { 
     echo set_e('error','Image ['.$i.'] not uploaded',''); 
    } 


} 

我得到的錯誤是

Warning: Invalid argument supplied for foreach() in /sitefolder/functions.php on line 1096 

線1096是第一個代碼框中

回答

3

首先第一線,從不使用數組鍵而不檢查它們的存在。總結你的代碼

if (array_key_exists('image', $_FILES)) 
{ 
    // ... 
} 
else 
{ 
    // error handling 
} 

其次,即使鍵存在,$_FILES['image']['name']應該是一個字符串,你不能養活反正這foreach。更好:

foreach ($_FILES as $file) 
{  
    $uploadfile = $uploaddir . basename($file['name']); 
    if (!move_uploaded_file($file["tmp_name"], $uploadfile)) 
    { 
     echo set_e('error','Image ['.$i.'] not uploaded',''); 
    } 
} 
+0

嗨試圖原代碼,並與我添加了編輯嘗試過了,它仍然不工作 – Ben

+0

@Ben:你能解釋什麼是「不工作」的意思? '$ _FILES'的'print_r()'也可能給出一些見解。 – Tomalak

+0

我的意思是它顯示錯誤消息set_e(...)。此外,print_r正在返回空... Array() – Ben