分享
 
 
 

利用ASP.NET设计FTP文件上传

王朝asp·作者佚名  2008-05-21
窄屏简体版  字體: |||超大  

如果要用ASP来作一个FTP文件上传的页面,我想很多人立刻就会想到要用第三方开发的组件,利用第三方的组件,虽然开发起来相对比较容易。但一般来说,免费下载的第三方的组件都有某些方面的功能限制,若要购买正版的第三方组件,对于国内的用户,花销也是一个不小的数字,就是能够承担的起,烦杂的手续也使很多人望而却步。虽然微软公司在本身的视窗系统里面也提供了一个可以用来上传文件的组件--Posting Acceptor。但用过这个组件的朋友们都有一种普遍的感觉,就是实在不好用。

现在好了,自从微软公司推出了.Net FrameWork以后,作为.Net FrameWork中重要组成部分的ASP.NET已经在内部建立了文件上传的功能,并且这种功能既是免费的,用起来又相当好用。下面我们就通过一个例子来介绍如何利用ASP.NET的这种功能完成文件上传。

一. 软件编写及的运行环境

微软公司视窗2000专业版和.Net FrameWork SDK BETA2(微软公司开发,用以.Net开发的软件开发包测试2版本) 。 如果运行的服务器的硬盘分区是NTSF分区,就请把服务器上的所有硬盘的存取属性设定为Everyone , 这样可确保上传文件可以正确写入服务器的硬盘中。

二. 软件的基本功能

本软件主要完成上传本地的文件到服务器的指定目录的功能。就是在软件的运行界面中,在用户选择完要上传的文件名称,填入要上传到服务器的目录名称后,如果没有填入上传到服务器目录,则使用缺省目录" C: " ,如果填入的目录在服务器上不存在,就建立此目录。在按" 开始上传 "按钮后,软件就把选择的文件上传到指定的目录中,然后返回上传文件的信息,即文件的名称,文件的大小及文件的类型。软件具体的操作界面及运行结果界面如下图所示:

图1:软件的操作界面

图2:软件的运行结果界面

三. 软件设计中的重要步骤及具体解决办法

<一>.选择本地要上传到服务器的文件

首先要感谢ASP.NET的强大功能,他提供的HTML控制元件,使得我们很容易的通过一个对话框来选择要上传的文件。当然你的浏览器也必须是IE 3.02 或者Netscape 3.0版本或者比这二者版本高的浏览器。通过下列语句就可以完成选择本地一个文件的工作:

<input id = " loFile " type = " file " runat = " server " >

<二>.为了成功完成文件上传工作,在Form中的编码必须用" multipart/form-data " , 而不用From的缺省编码" application/x-www-form-urlencoded "。具体代码如下:

<form method = " post " enctype =" multipart/form-data " runat = " server "></form >

<三>.获得上传的文件名称及对磁盘的若干操作

为了获得上传的文件名称,必须要引入一个名称空间( NameSapce ) --System.IO。此名称空间里面定义了许多关于文件及磁盘操作的类,在本软件中就是通过这些类的某些方法和属性来完成软件中的一些功能。

(1). 获得上传文件的名称

使用Path类中的GetFileName方法,具体如下:

lstrFileName = loFile.PostedFile.FileName

' 注: loFile.PostedFile.FileName 返回的是通过文件对话框选择的文件名,

这之中包含了文件的目录信息lstrFileName = Path.GetFileName ( lstrFileName )

' 去掉目录信息,返回文件名称

(2). 判断上传目录是否存在,不存在就建立

建立目录要使用到Directory类中的 CreateDirectory 方法,判断目录是否存在要用到 Directory 类中的Exists方法。具体如下:

If ( not Directory.Exists( lstrFileFolder ) ) Then

Directory.CreateDirectory ( lstrFileFolder )End If

' 注:lstrFileFolder是用户填入的目录名称,或者是缺省的目录名称

<四>.上传选定文件到服务器上

在前面工作都已经完成以后,就可以上传文件了,上传文件相对比较简单,就用下面2行语句就可以完成上传工作。

lstrFileNamePath = lstrFileFolder & lstrFileName

' 得到上传目录及文件名称loFile.PostedFile.SaveAs ( lstrFileNamePath )

'上传文件到服务器

<五>.获得并显示上传文件的属性

FileName.Text = lstrFileName

' 获得文件名称FileType.Text = loFile.PostedFile.ContentType

'获得文件类型FileLength.Text = cStr ( loFile.PostedFile.ContentLength )

'获得文件长度FileUploadForm.visible = falseAnswerMsg.visible = true

'显示上传文件属性

以上就是本软件在编写时的一些比较重要的地方。

四. 程序源代码:

<% @ Import Namespace=" System.IO " %><html ><BODY ><SCRIPT LANGUAGE = "VB" RUNAT = "SERVER" >

Sub UploadFile_Clicked ( Sender as Object, e as EventArgs )

Dim lstrFileName as string

Dim lstrFileNamePath as string

Dim lstrFileFolder as string

' 如果上传目录为空,就使用" c: "作为缺省上传目录

' 获得上传到服务器的目录名称

if dir.value <> "" then

lstrFileFolder = dir.value

else

lstrFileFolder = "c:"

end if

' 获得文件名称

lstrFileName = loFile.PostedFile.FileName

' 注: loFile.PostedFile.FileName 返回的是

通过文件对话框选择的文件名,这之中包含了文件的目录信息

lstrFileName = Path.GetFileName ( lstrFileName )

' 去掉目录信息,返回文件名称

' 判断上传目录是否存在,不存在就建立

If ( not Directory.Exists ( lstrFileFolder ) ) Then

Directory.CreateDirectory ( lstrFileFolder )

End If

'上传文件到服务器

lstrFileNamePath = lstrFileFolder & lstrFileName

' 得到上传目录及文件名称

loFile.PostedFile.SaveAs ( lstrFileNamePath )

' 获得并显示上传文件的属性

FileName.Text = lstrFileName

' 获得文件名称

FileType.Text = loFile.PostedFile.ContentType

' 获得文件类型

FileLength.Text = cStr ( loFile.PostedFile.ContentLength )

' 获得文件长度

FileUploadForm.visible = false

AnswerMsg.visible = true

' 显示上传文件属性

End sub</SCRIPT ><ASP:panel id = "FileUploadForm" visible = " true " runat = "server" ><form method = "post" enctype = "multipart/form-data" runat = "server" >

<h1 > 欢迎使用ASP.NET页面实现文件上传 </h1 >

请选择上传到服务器的文件名称:

<input id = "loFile" type = "file" runat = "server" > <br >

请输入上传到服务器的目录名称:

<input id = "dir" type = "text" runat = "server" > <br >

<input type = "submit" value = "开始上传" OnServerClick = "

UploadFile_Clicked" runat = "server" >

<br ></form ></ASP:panel ><ASP:panel id = "AnswerMsg" visible = " false " runat = "server" >

谢谢使用ASP.NET页面实现文件上传 <br >

成功上传 <ASP:label id = "FileName" runat = "server" /> <br >

文件大小 <ASP:label id = "FileLength" runat = "server" /> 字节 <br >

文件类型 <ASP:label id = "FileType " runat = "server" /> <br ></ASP:panel ></BODY ></HTML >

五. 总结

至此我们就完成了一个比较完善的FTP文件上传软件的全部工作,由此可见ASP.NET的功能还是比较强大的。通过本例子,我们也看到要想灵活运用ASP.NET,还要深入掌握微软公司为.NET FRAMEWORK开发的软件开发包(SDK BETA 2),只有掌握了.NET FRAMEWORK开发的软件开发包,才可能用ASP.NET开发出功能更强大,生命力更大的软件。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有