在客户端运行,它允许用户提交数据到服务器,然后在指定的范围内管理这些信息,这种处理模式大量使用在实际开发中,尤其是在构建交互式网络文档管理系统方面:网上考试系统、文件传输系统、新闻发布系统以及公司竞标系统等方面都有大量应用! 以下使用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[1]=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/"+relaUrl+"/"+txt; // 10.80.50.1为作者服务器地址,你应该将它修改为你所在服务器地址 dr[2]="下载"; } else if(Directory.Exists(d)){//如果是文件夹 dr[0]="文件夹"; //type类型 string password=GetFolderPassword(d); //取得文件夹密码信息 int type=GetFolderLimitType(d); if((password!="no")&&(type!=1)) dr[2]="href=PasswordValidate.aspx?path="+d+">密封"; //操作action else dr[2]="进入"; //操作action dr[3]=GetFolderOwner(d); //取文件夹创建者名 } else Response.Write(""); dt.Rows.Add(dr); //添加行 return dt; //返回数据表 }
|