2013-11-23 76 views
0

我目前正在開發一個網站項目,需要在同一個表單中上傳多個圖片。多次上傳,僅上傳最後一個文件

當表單被提交時,只有最後一張圖片被上傳,我不知道爲什麼。我一直在尋找Google,本網站和其他許多人的答案,但我找不到任何具有完全相同問題的人找到解決方案。

我已經測試都與WAMP和上網本的基本代碼,而問題依舊......

這裏的形式:

<form action="index.php?action=add" method="post" enctype="multipart/form-data"> 
<input type="file" name="file1"/><br/> 
<input type="file" name="file2"/><br/> 
<input type="file" name="file3"/><br/> 
<input type="hidden" name="add" value="1"/> 
<input type="submit" value="ok"/> 

這裏是我的代碼用於上傳:

function move_avatar($avatar) 
{ 
    $extension_upload = strtolower(substr( strrchr($avatar['name'], '.') ,1)); 
    $name = time(); 
    $nomavatar = str_replace(' ','',$name).".".$extension_upload; 
    $name = "images/".str_replace(' ','',$name).".".$extension_upload; 
    move_uploaded_file($avatar['tmp_name'],$name); 
    return $nomavatar; 
} 
if(!empty($_POST['add'])){ 
    for($i=1;$i<=3;$i++){ 
     if(!empty($_FILES['file'.$i]['size'])){ 
      $extensions_valides = array('jpg' , 'jpeg' , 'gif' , 'png', 'bmp');   
      $extension_upload = strtolower(substr(strrchr($_FILES['file'.$i]['name'], '.') ,1)); 
      if(in_array($extension_upload,$extensions_valides))  
      $img =(!empty($_FILES['file'.$i]['size']))?move_avatar($_FILES['file'.$i]):''; 
      else $img = 'defaultImg.png'; 
     }else $img = 'defaultImg.png'; 
    } 
    print_r($_POST); 
}else include('test.php'); 

任何想法? :/

回答

0

它是來自Facebook的Caroline!

即使您在Facebook上閱讀我的答案,我發佈此答案以表明此問題已解決。

測試完腳本後,我發現有什麼問題。 問題是位於你的功能,在這裏你聲明$ name變量:

$name = time(); 

當你同時上傳多個圖片,它們都具有相同的時間戳,因此,相同的名字!這就是爲什麼只發送最後一張照片!

爲了解決這個問題,我在你的功能,以添加參數添加一個數字,這將使彼此不同的文件名:

function move_avatar($avatar,$number) 

然後我說這個新變量到第一$ name變量:

$name = time().$number; 

最後,我用的時候使用該函數$ i變量:

   $img =(!empty($_FILES['file'.$i]['size']))?move_avatar($_FILES['file'.$i],$i):''; 

通過這些修改,所有上傳的圖片現在都有一個明確的名稱,最後一個數字不同。