Feed on
Posts
Comments
推薦本文到Plurk噗浪去!

最近在實做多重檔案上傳,寫過一篇 [PHP] pear 模組 HTTP_Upload 多重檔案上傳 Multiple files upload,那一開始我先設定只能上傳5個檔案,後來想想動態的話比較方便,畢竟現在網站都講求 web2.0,所以就利用 jQuery 來動態新增 input file 欄位,作法其實很簡單,不難的喔。其實還有 jQuery Confirm Plugin 可以利用它來確定使用者是否刪除檔案。

之前介紹的上傳檔案 html 部份:

<html>
 <head>
 </head>
 <body>
  <form name="fileuploadexample2" method="POST" enctype="multipart/form-data" action="">
    <input type="file" name="f[]">&nbsp;檔案名稱:<input type="text" name="file_show_name[]" value="" size="32" maxlength="64"><br />
    <input type="file" name="f[]">&nbsp;檔案名稱:<input type="text" name="file_show_name[]" value="" size="32" maxlength="64"><br />        
    <input type="file" name="f[]">&nbsp;檔案名稱:<input type="text" name="file_show_name[]" value="" size="32" maxlength="64"><br />
    <input type="file" name="f[]">&nbsp;檔案名稱:<input type="text" name="file_show_name[]" value="" size="32" maxlength="64"><br />
    <input type="file" name="f[]">&nbsp;檔案名稱:<input type="text" name="file_show_name[]" value="" size="32" maxlength="64">
   <input type="submit" name="submit" value="Submit" />
  </form>
 </body>
</html>


改成:

<html>
 <head>
 </head>
 <body>
  <form name="fileuploadexample2" method="POST" enctype="multipart/form-data" action="">
     <input type="button" id="add_button" name="add_button" value="增加附加檔案">
     <div id="add_file_button"></div>
    <input type="file" name="f[]">&nbsp;檔案名稱:<input type="text" name="file_show_name[]" value="" size="32" maxlength="64"><br />
    <input type="file" name="f[]">&nbsp;檔案名稱:<input type="text" name="file_show_name[]" value="" size="32" maxlength="64"><br />        
    <input type="file" name="f[]">&nbsp;檔案名稱:<input type="text" name="file_show_name[]" value="" size="32" maxlength="64"><br />
    <input type="file" name="f[]">&nbsp;檔案名稱:<input type="text" name="file_show_name[]" value="" size="32" maxlength="64"><br />
    <input type="file" name="f[]">&nbsp;檔案名稱:<input type="text" name="file_show_name[]" value="" size="32" maxlength="64">
   <input type="submit" name="submit" value="Submit" />
  </form>
 </body>
</html>

jQuery 的部份:

$(document).ready(function(){
  $("#add_button").click
  (
    function()
    {
      $("#add_file_button").append('<input type="file" name="f[]">&nbsp;檔案名稱:<input type="text" name="file_show_name[]" value="" size="32" maxlength="64"><br />');      
    }
  );
  $("a[id='del_file[]']").click(function(){
      if (confirm('確定刪除檔案')) {
        return true;
      }
      return false;
  });    
});

這樣大致少就可以了喔,可以動態新增檔案,那處理檔案上傳部份,可以利用 PHP 的 for 加上 count 函式,來處理動態表單。

推薦本文到Plurk噗浪去!
  • Abby

    哈囉~你好!!

    最近正在嘗試著作”動態新增表單欄位”,剛好看你的教學,受益良多~~^^

    可否請問一下~如果我想判斷表單欄位是否為空值,也就是說如果欄位為空的話,會彈出警告說明

    有欄位未填寫!!

    謝謝~~

  • Juilin Chung

    站長您好  拜讀您的技術文章 可實現動態新增上傳欄位功能  
    但是….接收端卻抓不到值  
    $f=$_REQUEST["f"];
    echo $f;

    正常來說  陣列的部分應該會列出 陣列的值

    但我印出來的卻是空值…..

    請問版大…是什麼原因呢?

  • appleboy48
  • Juilin Chung

     啊~~~我的錯…沒注意到..抱歉版大  問了個傻問題~
    謝謝