原文出處  http://www.dotblogs.com.tw/mis2000lab/archive/2013/08/19/multiple_fileupload_asp_net_20130819.aspx

之前的两个范例:

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

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

第一次改良:

学员原本提供的作法:

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

[ASP.NET] 在页面上显示上传的图片

http://www.dotblogs.com.tw/aquarius6913/archive/2013/04/26/102317.aspx?fid=56777

FileUpload控件「批次上传 / 多档案同时上传」的范例--以「流水号」产生「变量名称」的更多相关文章

  1. WebForm之FileUpload控件(文件上传)

    FileUpload控件要与Button.LinkButton.ImageButton配合使用 FileUpload控件的方法及属性: 1.SaveAs("要上传到服务器的绝对路径" ...

  2. Asp.net中FileUpload控件实现图片上传并带预览显示

    单一图片上传——“选择”+“上传”,.NET默认模式: 1.实现原理:     采用FileUpload控件默认的使用方式,先由“选择”按钮选择图片,然后单击“上传”按钮完成上传,并可在“上传”按钮的 ...

  3. 使用Anthem.NET 1.5中的FileUpload控件实现Ajax方式的文件上传

    Anthem.NET刚刚发布了其最新的1.5版本,其中很不错的一个新功能就是对文件上传功能的Ajax实现.本文将简要介绍一下该功能的使用方法. Anthem.NET的下载与安装 Anthem.NET可 ...

  4. C# 自定义FileUpload控件

    摘要:ASP.NET自带的FileUpload控件会随着浏览器的不同,显示的样式也会发生改变,很不美观,为了提高用户体验度,所以我们会去自定义FileUpload控件 实现思路:用两个Button和T ...

  5. FileUpload控件使用初步

    FileUpload控件使用初步   FileUpload控件使用初步: 1.实现文件上传 protected void btnSubmit_click(object sender, EventArg ...

  6. webform FileUpload控件实例应用 上传图片

    首先在根目录下建一个"images"文件: HTML: <form id="form1" runat="server"> < ...

  7. ASP.NET让FileUpload控件支持浏览自动上传功能的解决方法

    ASP.NET的FileUpload控件默认是不支持服务端的onchange事件的,此时可以用一种变通的方法来实现这一功能. 这就需要借用客户端的onchange事件,调用__doPostBack方法 ...

  8. Fileupload控件导致500错误

    问题: 今天遇到一个问题,用Fileupload控件上传Excel文件,用一个button控件调用“FileUpload1.SaveAs”方法,点击按钮后出现服务器500错误.如下图: 解决方法: 在 ...

  9. FileUpload控件

    FileUpload控件 属性:FileName: 获取上传的文件名 HasFile: 是否选择(存在)上传的文件 ContentLength: 获得上窜文件的大小,单位是字节(byte) 方法:Se ...

随机推荐

  1. 数据库内置视图以及常见的DBMS开发包

    如果想了解oracle运行的一些数据信息,oracle有一些视图可以供我们查询,通过这些内置的视图我们可以了解数据库 运行的一些信息,比如数据库文件存在什么地方.有哪些表空间.表空间的利用率.orac ...

  2. Spark是一种分布式的计算方案

    Spark的安装基于HDFS,所以我们要设置hadoop的配置文件,所以spark的存储不是其主要的功能点,而spark作为分布式生态中的角色是一种计算模式(其他 的计算 模式,比如MR,Storm, ...

  3. JavaScriptResult用法

    写MVC项目的时候,一开始就遇到返回脚本无法执行的情况,查阅博客园中老鸟的各种文章,最后没有得出个所以然,没办法,找项目经理实地讨论. public JavaScriptResult Hello() ...

  4. php文字水印和php图片水印实现代码

    本文章向码农们介绍php文字水印和php图片水印实现代码,需要的码农可以参考一下. php 文字水印 文字水印就是在图片上加上文字,主要使用gd库的imagefttext方法,并且需要字体文件. 实现 ...

  5. Windows消息初探(1)

    Windows消息初探(1) 最近恢复对Windows API的学习,深深感受到没有对应的中文资料的痛苦,于是上MSDN上面去将Windows消息搞了一些回来翻译出来,供自己查阅,也与大家分享,能力有 ...

  6. C# Windows Forms 事件处理顺序

    事件引发的顺序对某些Windows 窗体应用来说十分重要.当某些事件需要特别处理时(如重绘窗体的某些部分),必须知道事件在运行时的确切引发顺序.下面就应用程序和控件的生命周期中的几个重要阶段的事件顺序 ...

  7. makefile 学习(一)

    一.Makefile的基本规则 GNU make 规则: target ... : prerequisites ...     command     ....     .... target - 目 ...

  8. Comparing cards

    For built-in types, there are conditional operators (<, >, ==, etc.) that compare values and d ...

  9. socket学习笔记——获取域名与IP(linux)

    gethostbyname.c #include <stdio.h> #include <stdlib.h> #include <unistd.h> #includ ...

  10. 在C++中调用DLL中的函数 (3)

    1.dll的优点 代码复用是提高软件开发效率的重要途径.一般而言,只要某部分代码具有通用性,就可将它构造成相对独立的功能模块并在之后的项目中重复使用.比较常见的例子是各种应用程序框架,ATL.MFC等 ...