当前位置: 首页 > 图文教程 > 网络编程 > ASP.NET > Asp.net+Xml开发网络硬盘

ASP.NET
简单Web service 身份验证解决方案
asp.net SQL存储过程分页
asp.net 虚拟主机时常出现MAC验证失败错误之解决方法
ASP.net(c#) 生成html的几种解决方案[思路]
asp.net 生成静态页时的进度条显示
asp.net Coolite 学习交流
Coolite Cool Study 1 在Grid中用ComboBox 来编辑数据
Coolite Cool Study 2 同时更新多个Tab
Coolite Cool Study 3 MVC + Coolite 的实现代码
CommunityServer又称CS论坛的相关学习资料
C# 给站点指定位置的某种格式的图片添加水印
C# 添加文字水印类代码
asp.net 纯真ip库取得所在地实现代码
.NET 动态编译
C# 动态编译、动态执行、动态调试
asp.net 实现自定义Hashtable (.net)
asp.net 2.0的文件上传(突破上传限制4M)
C# OWC生成图表
asp.net javascript 文件无刷新上传实例代码
ASP.net 路径问题 详细说明

ASP.NET 中的 Asp.net+Xml开发网络硬盘


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-11-03   浏览: 65 ::
收藏到网摘: n/a

文件传送常用的三种方式FTP、Email及“网上邻居”都在一定程度上实现了文件数据的交流,但它们都主要面向“点对点”的传送,无法实现“一块空间,资源互见”的应用需求,这种基于“点对多”的共享模式需要寻求另外的传输途径,网络硬盘就是一种很好的解决方式。

常用传输方式及其在特定环境下面临的困难

我们经常有这样的应用需求:通过网络交换公共数据文件以实现资源共享,同时保护私有数据不被非法访问,并使用简单、直观的方式操作。我们常用的文件传输FTP、Email邮件、网上邻居都能实现文件的传送。其中,"Ftp"功能最为强大,但使用起来却稍显复杂,一大堆设置足以让许多人望而止步,尤其用户数量不可预见时,针对特殊需求用户的设置将更加繁琐;"Email"是大家所熟悉的了,但它的传送不仅需要你连入Internet,而且它的安全性也是个问题,在企业内部,财务、劳资等文件资料需通过这种方式交流不是好办法;"网上邻居"是又一种传送文件的方法,通过在本机上指定共享的Web文件夹并放置资源文件,一定范围内的用户可以访问到这些文件,然而这种方式使用的范围相当有限,通常在同一个DNS段地址内的用户才能顺利访问,其它尤其是Internet上的用户,很难使用,此外同Email类似,它的使用也不直观,很多时候你不得不在许多列表计算机上一层层展开搜索才有可能获取你想要的资源!

由此看来,以上三种方式虽然在一定程度上实现了文件数据的交流,但它们都主要面向"点对点"的传送(你只能被动地等对方放置数据而不能主动"可视化"地索取),无法实现"一块空间,资源互见"的应用需求,这种基于"点对多"的共享方式需要寻求另外的传输途径,网络硬盘就是一种很好的解决方式。

网络硬盘的优势

网络硬盘(也称共享空间),是服务器上的一块硬盘空间,在这里,如果你具备足够的权限,你可以对它随意操作,就象使用你的本地计算机一样。要知道,这一切以Http的方式传输,以Web的形式展现在所有用户面前,通过浏览器这种熟悉的方式访问,这样,"一块空间,资源互见"的共享模式得以实现!

此外,网络硬盘界面在客户端运行,它允许用户提交数据到服务器,然后在指定的范围内管理这些信息,这种处理模式大量使用在实际开发中,尤其是在构建交互式网络文档管理系统方面:网上考试系统、文件传输系统、新闻发布系统以及公司竞标系统等方面都有大量应用!

以下使用Asp.net(Visual C#语言实现)和Xml(可扩展标记语言)开发了这样的网络硬盘系统。关于程序的开发细节及代码中使用的关键技术和难点,都有详细的讲解,参照这些说明,你完全可以开发出自己的网络硬盘。


网络硬盘实现的功能


我们的网络硬盘实现了以下功能:

1、查看文件夹内容

2、创建新文件夹同时可设置访问权限

3、文件夹间的跳转:进入下一级,返回上一级

4、上传文件到指定文件夹

5、下载文件到本机或在线查看文件内容

6、删除文件或文件夹


开发细节及技术关键点


1、查看文件夹内容:

程序一开始将进入指定的根文件夹(如\NetHard),这个文件夹下的内容将通过数据绑定控件(DataGrid)来列表显示,包括以下方面:类别(区别文件夹或文件)、名称、权限(是否允许进入文件夹?是否可以下载文件?)、删除(是否允许删除文件或文件夹?)以及针对文件夹的创建者。这里,由于文件夹中内容动态变化(你不知道什么时候就有用户传送了文件或新建了文件夹或删除了它们),我们通过动态创建数据表DataTable来读取指定文件夹下的内容, 然后作为数据源与显示控件DataGrid绑定,这样,数据的显示就总是适时的。创建动态表的函数如下:

public DataTable Bind(string fullFolderPath)//创建数据表读取文件夹内容
{
//以下是动态创建数据表的方法
DataTable dt=new DataTable();
DataRow dr;
//首先创建数据表结构
dt.Columns.Add(new DataColumn("type",System.Type.GetType("System.String")));//类型
dt.Columns.Add(new DataColumn("name",System.Type.GetType("System.String")));//名称
dt.Columns.Add(new DataColumn("action",System.Type.GetType("System.String")));//操作
dt.Columns.Add(new DataColumn("owner",System.Type.GetType("System.String")));//创建人
//为每一行填充数据
foreach(string d in Directory.GetFileSystemEntries(fullFolderPath)){
dr=dt.NewRow();//建新行
string[] parts=d.Split(new char[]{'\\'});
string txt=parts[parts.Length-1];//取最后一部分的字符串,它将可能是文件名或文件夹
dr=txt;//名称name
if(File.Exists(d))//如果是文件
{
dr[0]="文件";//类型type
int pos=currFullPath.IndexOf("NetHard");
string relaUrl=currFullPath.Substring(pos);
string
url="http://10.80.50.1/SharedSpace/"+rel