FileUpload控件「批次上传 / 多档案同时上传」的范例 (VB语法)
http://www.dotblogs.com.tw/mis2000lab/archive/2008/05/14/3986.aspx
FileUpload控件真的简单好用,不使用它来作批次上传,却要改用别的方法,实在不聪明。要用就一次用到底,
公开FileUpload控件「批次上传」的范例,千万不能错过。
首先,进行HTML画面的设计,根据上图,在画面上使用多个 FileUpload控件,然后搭配一个按钮控件即可。
除此以外,范例 8_Multi_Upload.aspx还加入了「避免上传同名档案」的功能(本范例共有三种子功能,其中沿用本章之前介绍的两个范例),可以说是把本章的各种范例作一个大融合。
(本文于2008/10/14修改)以下是后置程序代码:
Protected Sub Button1_Click()Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click
'--批注:网站上的目录路径。所以不写磁盘名称(不写 “实体”路径)。
Dim saveDir As String = "\[Book]FileUpload\Uploads\"
Dim appPath As String = Request.PhysicalApplicationPath
Dim tempfileName As String = Nothing
Dim myLabel As New System.Text.StringBuilder
Dim i As Integer
For i = 1 To (Request.Files.Count)
Dim myFL As New FileUpload
myFL= CType(Page.FindControl("FileUpload" & i), FileUpload)
If (myFL.HasFile) Then
Dim fileName As String = myFL.FileName
Dim pathToCheck As String = appPath & saveDir & fileName
'========================================(Start)
If (System.IO.File.Exists(pathToCheck)) Then
Dim my_counter As Integer = 2
Dim error_msg As String = Nothing
While (System.IO.File.Exists(pathToCheck))
' --档名相同的话,目前上传的档名(改成 tempfileName),前面会用数字来代替。
tempfileName= my_counter.ToString & "_"& fileName
pathToCheck= appPath & saveDir & tempfileName
my_counter= my_counter + 1
End While
fileName= tempfileName
error_msg= error_msg & "<br>抱歉,您上传的档名发生冲突,档名修改--- " & fileName
Label1.Text= error_msg
End If
' –完成档案上传的动作。
Dim savePath As String = appPath & saveDir & fileName
myFL.SaveAs(savePath)
'========================================(End)
myLabel.Append("<hr>檔名---- " & fileName)
End If
Next
Label2.Text= "上传成功" & myLabel.ToString
End Sub
本范例, C#的语法在此 ---- [C#]FileUpload控件「批次上传 / 多档案同时上传」的范例
ASP.NET案例精编(清华大学出版社 / 作者MIS2000Lab)
http://www.china-pub.com/46063
2009/5/15上市
市场价 :¥59.80 RMB(人民幣)
--------------------------------------------------------------------------------------------------------------------------------------------
- 本範例的 C#語法,請看 [C#]FileUpload控制項「批次上傳 / 多檔案同時上傳」的範例
- 2008/8/11补充:感谢 Nick网友的响应,在MasterPage底下,这段程序会出现一些错误。只有一行必须修改成----myFL = CType(Me.Master.FindControl("ContentPlaceHolder1").FindControl("FileUpload" & i), FileUpload)
Nick网友修改后的范例:Project.rar
- 关于本文提到的程序,有一个 FindControl()的用法,请读者看看这篇文章,也有相关说明 ---- [习题]GridView里面,样版(Template)内的控件,怎么抓取?使用FindControl就对啦~
- Web Service版的 FileUpload,请看这一篇文章:http://www.dotblogs.com.tw/puma/archive/2009/01/06/6660.aspx
...........................................................................................................................................................
本书的相关范例,还有----
- 避免上传的「档名」重复。会自动修改档名并且提示。
- 限制上传档案的大小(用程控、或是透过Web.Config设定档来作)
- 限制上传档案的「扩展名」
- 限制上传时,Server端的目录(避免上传到其它目录,有安全疑虑)
这些都是常用、网络上最常问到的范例,本书通通有~
请注意档案上传的风险,请看:
检 查上传档案扩展名真的有效吗?分析 IIS6 扩展名解析弱点!!
补充----
- ASP.NET Flash 多档上传(繁体中文SWF)
- 网络上找到的相关文章:让UpdatePanel支持上传文件 http://www.cnblogs.com/JeffreyZhao/archive/2008/05/04/build-component-to-upload-file-in-updatepanel.html
....................................................................................................寄信给我 mis2000lab (at)雅虎.com.台湾 ........
ASP.NET案例精编(清华大学出版社 / 作者MIS2000Lab)
http://www.china-pub.com/46063
2009/5/15上市
市场价 :¥59.80 RMB(人民幣)