FileUpload控件「批次上传 / 多档案同时上传」的范例--以「流水号」产生「变量名称」
原文出處 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 |
|
|
14 |
{ |
|
|
15 |
String |
|
|
16 |
||
|
17 |
if (myFL.HasFile) |
|
|
18 |
{ |
|
|
19 |
String |
|
|
20 |
||
|
21 |
savePath |
|
|
22 |
myFL.SaveAs(savePath); |
|
|
23 |
||
|
24 |
Label1.Text |
|
|
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)
http://www.dotblogs.com.tw/aquarius6913/archive/2013/04/26/102317.aspx?fid=56777
FileUpload控件「批次上传 / 多档案同时上传」的范例--以「流水号」产生「变量名称」的更多相关文章
- WebForm之FileUpload控件(文件上传)
FileUpload控件要与Button.LinkButton.ImageButton配合使用 FileUpload控件的方法及属性: 1.SaveAs("要上传到服务器的绝对路径" ...
- Asp.net中FileUpload控件实现图片上传并带预览显示
单一图片上传——“选择”+“上传”,.NET默认模式: 1.实现原理: 采用FileUpload控件默认的使用方式,先由“选择”按钮选择图片,然后单击“上传”按钮完成上传,并可在“上传”按钮的 ...
- 使用Anthem.NET 1.5中的FileUpload控件实现Ajax方式的文件上传
Anthem.NET刚刚发布了其最新的1.5版本,其中很不错的一个新功能就是对文件上传功能的Ajax实现.本文将简要介绍一下该功能的使用方法. Anthem.NET的下载与安装 Anthem.NET可 ...
- C# 自定义FileUpload控件
摘要:ASP.NET自带的FileUpload控件会随着浏览器的不同,显示的样式也会发生改变,很不美观,为了提高用户体验度,所以我们会去自定义FileUpload控件 实现思路:用两个Button和T ...
- FileUpload控件使用初步
FileUpload控件使用初步 FileUpload控件使用初步: 1.实现文件上传 protected void btnSubmit_click(object sender, EventArg ...
- webform FileUpload控件实例应用 上传图片
首先在根目录下建一个"images"文件: HTML: <form id="form1" runat="server"> < ...
- ASP.NET让FileUpload控件支持浏览自动上传功能的解决方法
ASP.NET的FileUpload控件默认是不支持服务端的onchange事件的,此时可以用一种变通的方法来实现这一功能. 这就需要借用客户端的onchange事件,调用__doPostBack方法 ...
- Fileupload控件导致500错误
问题: 今天遇到一个问题,用Fileupload控件上传Excel文件,用一个button控件调用“FileUpload1.SaveAs”方法,点击按钮后出现服务器500错误.如下图: 解决方法: 在 ...
- FileUpload控件
FileUpload控件 属性:FileName: 获取上传的文件名 HasFile: 是否选择(存在)上传的文件 ContentLength: 获得上窜文件的大小,单位是字节(byte) 方法:Se ...
随机推荐
- iOS UIButton 设置图片文字垂直排列
后面经过测试,如果button的文字长度变更,会导致图片位置变化,经过多次修改UIEdgeInsets的值也没有达到期望效果,最终采用集成UIButton类,重写layoutSubviews函数实现, ...
- 剑指Offer:面试题17——合并两个排序的链表
题目描述 输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则. 思路1: 分别用p1,p2两个指针扫描两个有序链表,p3指针去构建新链表h3. p1.val & ...
- Python和Django在Windows上的环境搭建
作为一个.NET程序员,真心不喜欢Python以及PHP这种松散的语法.有人说,程序员应该多学几门语言,本想学习Java,无奈感觉Java的语法太啰嗦了.很多人都推荐Python,说它的语法简洁,执行 ...
- 图像JPEG格式介绍
1 JPG格式介绍 JPEG (Joint PhotographicExperts GROUP)是由国际标准组织和国际电话电报咨询委员会为静态图像所建立的第一个国际数字图像压缩标准,也是至今一直在使用 ...
- SDUT 3340 数据结构实验之二叉树一:树的同构
数据结构实验之二叉树一:树的同构 Time Limit: 1000MS Memory Limit: 65536KB Submit Statistic Problem Description 给定两棵树 ...
- 洛谷P2729 饲料调配 Feed Ratios
P2729 饲料调配 Feed Ratios 36通过 103提交 题目提供者该用户不存在 标签USACO 难度普及/提高- 提交 讨论 题解 最新讨论 暂时没有讨论 题目背景 农夫约翰从来只用调 ...
- PZISP自动下载软件运行时出现“应用程序无法启动,因为应用程序的并行配置不正确”
在win7下以管理员身份运行“PZISP自动下载软件”时出现“应用程序无法启动,因为应用程序的并行配置不正确”时,是因为系统里面没有一些visual c++库 想一想,反正以后也要用上VS2010的, ...
- CSS3之阴影
CSS3中新增属性-阴影,可以做出很多漂亮的效果. 文字阴影text-shadow text-shadow属性值的顺序: text-shadow: h-shadow v-shadow blur col ...
- a different object with the same identifier value was already associat
问题:这个著名的托管态update更新异常 org.hibernate.NonUniqueObjectException: a different object with the same ident ...
- 2016-03-24:Windows内存泄露分析工具
参考资料 100%正确的内存泄漏分析工具 ------ tMemMonitor (TMM)