2008年5月19日 星期一

FileUpload控制項「批次上傳 / 多檔案同時上傳」的範例

FileUpload控制項「批次上傳 / 多檔案同時上傳」的範例

以下是即將發表的新書內容:
FileUpload控制項真的簡單好用,不使用它來作批次上傳,卻要改用別的方法,實在不聰明。要用就一次用到底,
公開FileUpload控制項「批次上傳」的範例,千萬不能錯過。

首先,進行HTML畫面的設計,根據上圖,在畫面上使用多個 FileUpload控制項,然後搭配一個按鈕控制項即可。
除此以外,範例 8_Multi_Upload.aspx還加入了「避免上傳同名檔案」的功能(本範例共有三種子功能,其中沿用本章之前介紹的兩個範例),可以說是把本章的各種範例作一個大融合。以下是後置程式碼:

以下是即將發表的新書內容:

01
02
03 Protected Sub Button1_Click() Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click
04 '--註解:網站上的目錄路徑。所以不寫磁碟名稱(不寫 “實體”路徑)。
05 Dim saveDir As String = "\[Book]FileUpload\Uploads\"
06 Dim appPath As String = Request.PhysicalApplicationPath
07 Dim tempfileName As String = Nothing
08 Dim myLabel As New System.Text.StringBuilder
09
10 For i = 1 To (Request.Files.Count - 1)
11
12 Dim myFL As New FileUpload
13 myFL = CType(Page.FindControl("FileUpload" & i), FileUpload)
14
15 If (myFL.HasFile) Then
16 Dim fileName As String = myFL.FileName
17 Dim pathToCheck As String = appPath & saveDir & fileName
18 '====用來處理上傳檔案的「檔名重複」問題 =================(Start)
19 If (System.IO.File.Exists(pathToCheck)) Then
20 Dim my_counter As Integer = 2
21 While (System.IO.File.Exists(pathToCheck))
22 ' --檔名相同的話,目前上傳的檔名(改成 tempfileName),前面會用數字來代替。
23 tempfileName = my_counter.ToString() & "_" & fileName
24 pathToCheck = appPath & saveDir & tempfileName
25 my_counter = my_counter + 1
26 End While
27 fileName = tempfileName
28 Label1.Text = "抱歉,您上傳的檔名發生衝突,修改如下" & "
" & fileName
29 End If
30
31 Dim savePath As String = appPath & saveDir & fileName
32 myFL.SaveAs(savePath) ' –存檔。完成檔案上傳的動作。
33 '==============================================(End)
34 myLabel.Append("
檔名---- " & fileName)
35 End If
36 Next
37
38 Label1.Text = "上傳成功
" & myLabel.ToString
39 End Sub


補充----
網路上找到的相關文章:让UpdatePanel支持上传文件 http://www.cnblogs.com/JeffreyZhao/archive/2008/05/04/build-component-to-upload-file-in-updatepanel.html

沒有留言: