博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
FileUpload控件「批次上传 / 多档案同时上传」的范例--以「流水号」产生「变量名称」...
阅读量:5023 次
发布时间:2019-06-12

本文共 3153 字,大约阅读时间需要 10 分钟。

原文出處  

 

 

之前的两个范例:

 

 

昨天上课时,有个学员拿这个范例来与我讨论,希望把写法作一下修改:

 

==== 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的方法来写程序,可能会被前辈「念」一顿

 

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

第一次改良:

    学员原本提供的作法:

01

protected void Button1_Click(object sender, EventArgs e)

02

{

 

03

    //== 方法一。 ==========================================

04

    BatchFileUpload(FileUpload1);  //==自己写的function

 

05

    BatchFileUpload(FileUpload2);

06

    BatchFileUpload(FileUpload3);

 

07

    BatchFileUpload(FileUpload4);

08

    BatchFileUpload(FileUpload5);

 

09

}

10

 

 

11

 

12

//***********************************************************

 

13

protected void BatchFileUpload(FileUpload myFL)

14

{

 

15

    String savePath = @"d:\temp\uploads\";

16

 

 

17

    if (myFL.HasFile)

18

    {

 

19

        String fileName = myFL.FileName;

20

 

 

21

        savePath = savePath + fileName;

22

        myFL.SaveAs(savePath);

 

23

 

24

        Label1.Text += "上传成功,档名---- " + fileName;

 

25

    }

26

 

 

27

}

 

上面的作法是把重复的程序,写成一个 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

 

 

 

另外提供一个很棒的 FileUpload范例,也提到 .ashx的作法(作者:Y2J

 

 

 

转载于:https://www.cnblogs.com/mis2000lab/p/3310365.html

你可能感兴趣的文章
Bzoj 3343: 教主的魔法
查看>>
括号序列(栈)
查看>>
一件趣事
查看>>
DevExpress控件TExtLookupComboBox实现多列模糊匹配输入的方法
查看>>
atom 调用g++编译cpp文件
查看>>
H3C HDLC协议特点
查看>>
iptables 网址转译 (Network address translation,NAT)
查看>>
ios __block typeof 编译错误解决
查看>>
android 插件形式运行未安装apk
查看>>
ios开发之 manage the concurrency with NSOperation
查看>>
Android权限 uses-permission
查看>>
NSEnumerator用法小结
查看>>
vim如何配置go语言环境
查看>>
机器学习好网站
查看>>
python 中的 sys , os 模块用法总结
查看>>
解题:国家集训队 Middle
查看>>
响应者链
查看>>
指针从函数内部带回返回值
查看>>
在使用webView播放flash或视频文件时无法关闭声音的问题
查看>>
redhat 7 源码安装 mysql5.5.49
查看>>