FileUpload控制項「批次上傳 / 多檔案同時上傳」的範例--以「流水號」產生「變數名稱」

摘要:FileUpload控制項「批次上傳 / 多檔案同時上傳」的範例--以「流水號」產生「變數名稱」
在書本「上集」的聊天室、多重檔案上傳
書本「下集」的自動化投票區,都有用到相同的技巧。




 

 

 

之前的兩個範例:

[C# / ASP.NET]FileUpload控制項「批次上傳 / 多檔案同時上傳」的範例(C#語法)

[VB / ASP.NET]FileUpload控制項「批次上傳 / 多檔案同時上傳」的範例 (VB語法)

 

 

昨天上課時,有個學員拿這個範例來與我討論,希望把寫法作一下修改:

 

==== HTML畫面設計 =====

    首先,進行HTML畫面的設計,

    多重檔案、批次上傳......在畫面上使用多個 FileUpload控制項,然後搭配一個按鈕控制項即可

    

 

==== 後置程式碼 =====

    初學者也可以乖乖地用五個 if判別式來作

    (一個 FileUpload控制項,就作一次,    程式碼不斷COPY 修改即可)。

    只要程式能順利執行,而且您又是剛剛入門的初學者......沒人敢說這樣做不好。

    以下是範例:

if (FileUpload1.HasFile)
{
          string fileName = FileUpload1.FileName;

          //……內容與上面範例相同,在此省略…… 

          FileUpload1.SaveAs(savePath);               
          myLabel.Append("<br>檔名---- " + fileName);
 }

if (FileUpload2.HasFile)
{
          string fileName = FileUpload2.FileName;
          //……省  略……
          FileUpload2.SaveAs(savePath) ;     
}

if (FileUpload3.HasFile)
{
          string fileName = FileUpload3.FileName;
          //……省  略……
          FileUpload3.SaveAs(savePath) ;     
}

//……以此類推……  這種Copy / Paste的作法很累吧~

 

學生(初學者)還在學習中,所以寫出上面的程式,我不會責怪他,畢竟能正確執行更重要。

但如果進入業界,還用這種 Copy / Paste的方法來寫程式,可能會被前輩「唸」一頓

 

****************************************************************************************************************************

第一次改良:

    學員原本提供的作法:


    protected void Button1_Click(object sender, EventArgs e)
    {
        //== 方法一。 ==========================================
        BatchFileUpload(FileUpload1);  //==自己寫的function
        BatchFileUpload(FileUpload2);
        BatchFileUpload(FileUpload3);
        BatchFileUpload(FileUpload4);
        BatchFileUpload(FileUpload5);
    }


    //***********************************************************
    protected void BatchFileUpload(FileUpload myFL)
    {
        String savePath = @"d:\temp\uploads\";

        if (myFL.HasFile)
        {
            String fileName = myFL.FileName;

            savePath = savePath + fileName;
            myFL.SaveAs(savePath);

            Label1.Text += "上傳成功,檔名---- " + fileName;
        }

    }

 

上面的作法是把重複的程式,寫成一個 function來呼叫

不斷地傳入「FileUpload控制項」就能完成多重檔案的上傳。

 

 

****************************************************************************************************************************

第二次改良:

    上述的範例,可以利用 「流水號」產生「變數名稱」 來縮減

 

    protected void Button1_Click(object sender, EventArgs e)
    {
        //== 兩種作法,任選其一 ===================================
 
        //== 方法一。 ==========================================
        // BatchFileUpload(FileUpload1);  //==自己寫的function
        // BatchFileUpload(FileUpload2);
        // BatchFileUpload(FileUpload3);
        // BatchFileUpload(FileUpload4);
        // BatchFileUpload(FileUpload5);
 
        //== 方法二。改寫如下 =====================================
         //== 透過  for 迴圈,以字串相連的方式,做出流水號(連號)的 「變數名稱」
 
        for (int i = 1; i <= Request.Files.Count; i++)
        {
            //***************************************************************
            FileUpload myFL = (FileUpload)Page.Form.FindControl("FileUpload" + i);
            //***************************************************************
 
            BatchFileUpload(myFL);  //==自己寫的function
        }
    }
 
 
    protected void BatchFileUpload(FileUpload myFL)
    {
        //-- 註解:先設定好檔案上傳的路徑,這是Web Server電腦上的目錄。
        //       C#語法在撰寫磁碟的目錄位置時,請留意以下的寫法:
        String savePath = "d:\\temp\\uploads\\";
 
        if (myFL.HasFile)
        {
            String fileName = myFL.FileName;
 
            savePath = savePath + fileName;
            myFL.SaveAs(savePath);
 
            Label1.Text += "<br />上傳成功,檔名---- " + fileName;
        }

 

上面的作法(以「流水號」產生「變數名稱」

    在書本「上集」的聊天室、多重檔案上傳

    書本「下集」的自動化投票區,都有用到相同的技巧。

 

從以前的 ASP到目前的 ASP.NET,包含 PHP與 JSP,我都測試過。   這個技巧都通用!

 

 

 

2012/9/5補充:另外一種作法,請參閱  http://www.allenkuo.com/userfiles/share/2012q3/2012-8-28_08-28-10.png

 

另一個相關的範例:

 

 

補充範例

checkBox的勾選問題

https://social.msdn.microsoft.com/Forums/zh-TW/bb822c68-affb-47c1-8879-369200467a41/checkbox?forum=236

 

 

 

 

 --------------------------------------------------------------------------------------------------------------------------------------------

  • 2008/8/11補充:感謝 Nick網友的回應,在MasterPage底下,這段程式會出現一些錯誤。
  • 只有一行必須修改成----
  • myFL = CType(Me.Master.FindControl("ContentPlaceHolder1").FindControl("FileUpload" & i), FileUpload)

Nick網友修改後的範例:Project.rar

 

 
相關文章:
 
 
.......................以下是廣告........................................................................................
 
 
我的書、我的課程,絕對沒有太多招數
 
都是用最基本的技巧
組合成各種變化。
 
如同詠春拳,三個套路,
排列組合、變化萬千
 
 
 
 
 
 
與其到處  Copy範例、到處抄襲程式碼(找到了也改不動)
 
為什麼不一次學好、學清楚?
 
然後讓自己有生產力呢?
(你學了一百招,但上了戰場,一招都使不出來?)
(客戶的要求,沒有一個你能自己做到?還是上網逐一發問、抄抄改改?)
 
 
為什麼人家可以千變萬化?
 
我只能到處拼拼湊湊?卻還天天加班、做不完?最後還是迷迷糊糊?
 
 
 
 
   如何一以貫之
         如何啟動「輕輕鬆鬆的自我學習之道」?
 
 
讓我告訴你,
一個沒有大型補習班招牌、沒有關鍵字廣告的書籍與課程
 
 
在時局這麼亂、經濟與工作越來越蕭條的  Bumbler 無能年代
 
為何所有補習班的 ASP.NET課程都開不成、招不到學生
 
我的課程,班班額滿,欲罷不能.............縱貫這三四年 全台灣 的 ASP.NET入門教學
 
 
 
 

 
 
 

我將思想傳授他人, 他人之所得,亦無損於我之所有;

猶如一人以我的燭火點燭,光亮與他同在,我卻不因此身處黑暗。----Thomas Jefferson

寫信給我--  mis2000lab (at) yahoo.com.台灣  或是  school (at) mis2000lab.net

................   facebook社團   https://www.facebook.com/mis2000lab   ......................

................   Google+   https://plus.google.com/100202398389206570368/posts ........

................  YouTube (ASP.NET) 線上教學影片  http://goo.gl/rGLocQ

*********************************************************************************************

*** 第一天 的 ASP.NET MVC線上課程 免費看(5.5小時)*** 

************************************************************(歡迎索取,免費申請)*****

 

ASP.NET遠距教學、線上課程(Web Form + MVC)第二門 課程「四折」-- 以MVC課程作為優惠。

第一天完整課程,提供 "完整" 試聽。  如不滿意 全額退費!

 

 

Blog文章 "附的範例" 無法下載,請看 這裡 ...... https://dotblogs.com.tw/mis2000lab/2016/03/14/2008_2015_mis2000lab_sample_download

請看我們的「售後服務」範圍(嚴格認定)

......................................................................................................................................................

...................................................................................................................................................... 

[遠距教學、教學影片] ASP.NET (Web Form) 課程 上線了!MIS2000Lab.主講

事先錄製好的影片,並非上課時側錄!   觀看影片時,有如我「一對一」跟您面對面講課

 

    MIS2000 Lab.  線上教學影片(YouTube) **免費觀賞**