首頁  >  文章  >  後端開發  >  上傳多個檔案的PHP腳本_PHP教程

上傳多個檔案的PHP腳本_PHP教程

WBOY
WBOY原創
2016-07-21 16:00:02915瀏覽

譯者註:本文的原名是《Creating a Multi-File Upload Script in PHP》。我很個人覺得這文章寫得一般,程式碼也不是非常專業,但是它比較短,而且一時間也找不到好一點的文章,就把這個譯過來了。其實PHP手冊裡也有一節是說多檔案上傳的,大家可以比較對比。文章內有的字句譯出來不太順眼,所以按照原意作了一定量的修改。本人水準有限,也望各位高手多指點。 

導言

  身為一個PHP的程式設計師,我曾經遇過這麼一個客戶,他需要一個可以同時上傳多個檔案的表單。因此,有一天夜裡我就花了一個小時的時間,找到了最好、最簡單的方法來完成這個要求。在這篇教學裡,「for」這個循環語句,將會成為核心程式碼。

腳本1:讓使用者設定需要上傳的檔案數目

uploadForm1.php



檔案上傳



  

請輸入你要同時上傳的檔案的數目,最大值是9


  


    
>


  


    
  



>>> body>


  上面的HTML程式碼非常簡單。在這段程式碼裡,我把uploadNeed這個元件的maxlength屬性設為1,那麼使用者所能輸入的最大值就是9了。當然,你可以根據需要自行修改這部份。

腳本2:建立動態表單

  好了,做好下面的這個頁面以後,我們就完成全部工作的一半了。我們用for迴圈語句來完成這個任務。

uploadForm2.php



檔案上傳



    // = $_POST['uploadNeed'];
  for($x=0;$x  ?>
    ?>" type="file" id="uploadFile">
    // 完成循環
  } ">
    
🎜> form>



  在這個頁面裡,我只是建立了一個帶有「type」屬性的HTML表單。在表單中間,我插入了一段PHP程式碼來完成循環。我把$x設為0並且把循環次數設為所需的值$uploadNeed(就是剛才使用者提交的那個值)。我還把$uploadNeed的值輸出到hidden域裡,以便它能傳遞到最後的一個頁面。

  作這些工作的目的是為了把$x這個變數的值,加在「name」屬性的值「uploadFile」的後面。這樣每個「name」屬性的值「uploadFile」的後面都會有一個不同的數字來區別第一個檔案。

腳本3:處理上傳檔案

現在就來完成上傳檔案的最後一步

processFiles.php

$uploadNeed = $_POST['uploadNeed'];
// 開始循環
for($x=0;$x$file_name = $_FILES['uploadFile'. $ x]['name'];
// 去除檔案名稱中的特殊字元
$file_name = stripslashes($file_name);
$file_name = str_replace("'","",$file_name) ;
$copy = copy($_FILES['uploadFile'. $x]['tmp_name'],$file_name);
// 檢查是否複製成功
if($copy){
echo "$file_name 上傳成功
";
}else{
echo "$file_name 上傳失敗
";
}
} // 結束循環
?>

  在這個腳本裡,我們首先要從uploadForm2.php中取得$uploadNeed這個變數。和前頁那個頁面一樣,我們用「for」語句來也建立迴圈。不同的時,我們需要在循環內使用預定義全域變數$_FILES,我把它傳遞給了$file_name這個變數。

  下一步,我們呼叫了stripslashes和str_replace兩個函數來處理。由於檔案名稱內可能包含一些特殊字符,所以我們使用stripslashes函數來防止上傳時出現解釋錯誤。

  注意我是如何加$x這個變數的,在$_FILES裡$x會變成數字。這樣程式就會知道得處理哪個文件了。

  當我們使用copy函數時,才真正的開始把上傳的檔案複製到指定目前內。最後還加上了一段簡單的程式碼來判斷複製是否成功,並把結果輸出到螢幕上。

結束語

  我肯定這個小小的腳本會讓你一次上傳多個檔案的工作變得更方便。你可以根據下列的提示,在這個腳本內加入相關的程式碼來完善它。

把檔案名稱保存在MySQL資料庫中 
取得檔案的大小並儲存到資料庫中 
建立一個臨時檔案儲存上傳失敗的檔案的檔案名,並在程式執行完以後再試嘗試 
新增批次刪除檔案的功能

www.bkjia.comtruehttp: //www.bkjia.com/PHPjc/317205.htmlTechArticle譯者註:本文的原名是《CreatingaMulti-FileUploadScriptinPHP》。我很覺得這篇文章寫得一般,程式碼也不是很專業,但是它比較短,而且一時間也...
陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn