您的位置:首页 > 编程语言 > VB

[习题]FileUpload 批次上传 / 多档案同时上传,上传成功后展示图片 (VB语法)

2010-12-28 17:48 591 查看
原文出处:[习题]FileUpload 批次上传 / 多档案同时上传,上传成功后展示图片 (VB语法)

http://www.dotblogs.com.tw/mis2000lab/archive/2010/12/01/fileupload_show_image_20101201.aspx

[习题]FileUpload控件「批次上传 / 多档案同时上传」,上传成功后展示图片 (VB语法)

有人在论坛上发问:
「档案透过 FileUpload控件上传成功之后,如何 "立即" 呈现在画面上呢?」

这很简单,请参阅以前的范例:

VB语法:FileUpload控件「批次上传 / 多档案同时上传」的范例 (VB语法)

C#语法:[C#]FileUpload控件「批次上传 / 多档案同时上传」的范例

沿用上面的范例,继续作下去即可。

ASP.NET案例精编——适用于VS 2005/2008(配光盘)
(1). HTML画面的最下方,添加几个 Image控件。

<p> <!-- 以上相同的部分省略,请沿用上面的范例即可 -->
<asp:LabelID="Label1" runat="server" ForeColor="#FF3300"></asp:Label><br/>
<asp:LabelID="Label2" runat="server"ForeColor="darkblue"></asp:Label>
<hr />
<span class="style3"><spanclass="style2">上传之后,立即呈现图片!<br />
<br />
</span></span>
<br />
<asp:Image ID="Image1"runat="server" Visible="False"/>    <asp:Image ID="Image2"runat="server" Visible="False"/>    <asp:Image ID="Image3"runat="server" Visible="False" /><br /><br/> <asp:Image ID="Image4"runat="server" Visible="False"/>    <asp:Image ID="Image5"runat="server" Visible="False" />
</p>

把每一个 Image控件设定为 .Visible = False,让它隐形起来(看不见)

(2). 后置程序代码(VB)的范例里面,
我们在For...Next循环里面,加上这几列程序代码即可。很简单。

Protected Sub Button1_Click(ByVal senderAs Object, ByVal e As System.EventArgs) Handles Button1.Click
'--批注:网站上的目录路径。所以不写磁盘名称(不写 “实体”路径)。
'--以下的路径,请依照实际状况,进行修改。否则程序会报错!

Dim saveDir As String ="VS2010_Book_Sample\[Book]FileUpload\Uploads\"
Dim appPath As String =Request.PhysicalApplicationPath

Dim tempfileName As String =Nothing
Dim myLabel As NewSystem.Text.StringBuilder

Dim i As Integer

For i = 1 To (Request.Files.Count)
Dim myFL As New FileUpload
myFL =CType(Page.Form.FindControl("FileUpload" & i), FileUpload)

DimmyImg As New Image
myImg= CType(Page.Form.FindControl("Image" & i), Image)

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
'=========================
'==省略,跟上面的范例程序一模一样。
'=========================
End If

' –完成档案上传的动作。
Dim savePath As String = appPath & saveDir & fileName
myFL.SaveAs(savePath)
'========================================(End)

myLabel.Append("<hr>檔名---- " & fileName)

'*******************************************************
'*** 上传后,立即展示图片 *************************

myImg.Visible = True

'--以下的路径,请依照实际状况,进行修改。否则程序会报错!
myImg.ImageUrl = "http://localhost:8080/WebSite1/这里是你上传档案的路径,请自行修改/" & fileName

'*******************************************************
EndIf
Next

Label2.Text = "上传成功" & myLabel.ToString
End Sub

=================================================================================
这个范例最有趣的地方,就是我用循环,
自动产生变量名称,例如: FileUpload1、FileUpload2、FileUpload3......等等。

或是 Image1、Image2、Image3......等等。

(请看上面红字的部分)

这种作法从以前ASP / JSP / PHP都可以用,一直到ASP.NET都可以继续这样玩下去。

我看见很多高手都会这招(常在程序代码里面有见过这种技巧),但好像没人想公开出来

(依照我的教学经验来看,对初学者来说,你讲了他们也「暂时」听不懂。)

=================================================================================

如果不使用上面的两种技巧,初学者也可以乖乖地用五个if判别式来作(以下是C#语法)

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

您可以参阅这篇文章([回忆].....一些感慨 #2.....什么样的程序?什么样的写法?对初学者有帮助,我有作了解释。

在我的书本里面,有数个范例都用上这个技巧。

例 如:

上集的「FileUpload」多重档案批次上传、网络聊天室,介绍 Application与Session的最佳案例(用来解说Application与 Session的应用)

下集也有「自动化投票区」使用了相同的技巧。

希望对您有帮助。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: