站长中国
设为首页 | 站长论坛

站长论坛 站长下载
您所在的位置: 站长中国 > 站长学院 > 网络编程 > NET专区 > 正文

利用ASP.NET设计FTP文件上传
  2007年08月20日00:55:31  评论(2条) 字体:[ ]
相关热点:

  如果要用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 = false
AnswerMsg.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开发出功能更强大,生命力更大的软件。





责任编辑:

收藏本文 打印 打印本文  推荐本文 告诉好友 投稿 投稿邮箱

站长排行

学院

新闻

专栏

盈利

[揭密网络黄链]中国留学生买凶专破日本
JSP语法(6)
超强弹出窗口代码,什么都挡不住
FLASH视觉特效实例之地震效果
贴吧发帖机使用教程(绝对原创)
关于数据分页(转自www.codeproject.co
ASP实现文件直接下载
Photoshop制作光感超酷效果水晶球
 遍历ASP.NET页面控件
永远的后门[经典]+查不出的后门
淘宝网卖家公然叫卖“艳照门”照片集
驳《百度Hi面世对腾讯有利》
Google绿色专家质疑黑色背景网页节省资
国内各IT企业办公环境揭秘(多图)
阿里妈妈广告卖主全攻略
站长创业源动力 主流站长站赏析
推荐阅读:80年小子的创业道理
Discuz!6.0猛将出击 最强论坛程序酷炫
我的网络,我的团队:专访李文明
百度新闻频道改版十天 流量止跌反弹翻
ECSHOP模板制作参考文档
悬挂阿里妈妈会否被百度惩罚
阿里妈妈是否是中小站长的救世主?
最强网店ECShop发新版 众多酷炫功能给
ECSHOP模板下载
土豆网,优酷网,爆米花等视频网站采集
DedeCms模板安装/制作概述
网上商店系统巅峰对决 ECShop vs ShopE
艰难的走在创业的路上 第一天
编程中国全站采集规则
性福联盟 一个不尊重站长的联盟
大脚:日赚100元—揭露最新firefox欺骗
大脚:垃圾站超级赚钱法之二—突破“站
大脚:垃圾站超级赚钱法之——前言
迅雷联盟、快车联盟收入对比
经理人必看的十个管理网站
Google Adsense的秘密 第二版
西联汇款兑付城市查询
不用SEO取得成功的10个步骤
关于做GOOGLE的五条经验
站长学院  网页设计 建站教程 图形图象 网络编程

Photoshop CS3
Photoshop CS3
不用Photoshop
不用Photoshop

DIV+CSS的开发方式 听听另外的
虚拟主机建站动易里快速生成的
VBScript特效代码 满屏幕乱跑
牛气!一个菜鸟站长的超强网站
创建、维护一个个人博客的“投
让网站流量稳步飙升的秘籍
网站推广的基本思想

新闻线索

如果你有站长界人事变动、重组并购、变革技术出现,以及产品投诉等重要新闻线索,请告诉我们,我们会给予特别关注。
0631-3653338
站长中国编辑部
站长中国24小时新闻热线: 13256307008