|
Asp.net+Xml开发网络硬盘(2) { //以下是动态创建数据表的方法 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]="<a href="+url+" target=_blank"+">下载</a>"; } else if(Directory.Exists(d)){//如果是文件夹 dr[0]="文件夹";//type类型 string passWord=GetFolderPassword(d);//取得文件夹密码信息 int type=GetFolderLimitType(d); if((password!="no")&&(type!=1)) dr[2]="<a href=PasswordValidate.aspx?path="+d+">密封</a>";//操作action else dr[2]="<a href=Default.aspx?path="+d+">进入</a>";//操作action dr[3]=GetFolderOwner(d);//取文件夹创建者名 } else Response.Write("<script>alert('无对象可绑定!')</script>"); dt.Rows.Add(dr);//添加行 return dt;//返回数据表 } }
这个方法取出指定文件夹下的内容分别处理:如果是文件,就显示"下载"链接指向服务器上文件的Url地址;对文件夹需要视保护与否及保护类型进一步区别处理:若"进入受限"则显示"密封"导入到密码验证页,"进入不受限"时修改查询字符串,显示"进入"链接指向初始显示页。
2、创建新文件夹及设置访问权限:
输入新文件夹名后,你就可以在当前路径下创建新的文件夹,Asp.net下远程创建新文件夹和在本地机操作完全一样,非常的简单,.Net的IO名字空间提供了专门的类库Directory,通过调用其方法就可以实现,语句如下:
Directory.CreateDirectory(string directory)
其中,字符串directory表示新建文件夹的完整路径,这个方法默认向所有用户开放新文件夹的完全读写访问权限。特殊地,对网络硬盘共享根文件夹(程序中示例为"NetHard"文件夹,你可以更改它)的创建你还可以手动进行,对应地,你需要手动设置以开放此文件夹的写入权限,在IIS下,你可以在"internet信息服务"下,对该文件夹执行"权限向导"来设置访问权限。
资源共享时应该考虑安全性。这里,你可以设置用户对该文件夹的访问权限,通过设置密码,你可以指定是否允许用户进入该文件夹,是否允许删除该文件夹,或者两者都禁止。这样,你可以保护自己的文件,将它们独占访问或者限制在一个特定的范围内(这个范围的成员应该知道你的密码),这样,产品研发部门可以共用一个文件夹,财务部门也通过同样的方式共用另一个文件夹,不属于这个部门的人员将限制访问。当然,这样的限制你也可以应用到单个文件上(这样的应用似乎不多,程序未实现)。
此外,为了管理这些文件夹,你需要保留它们的设置信息:文件夹名、位置、受限操作类型、密码及创建人等。程序中将这些信息写入一Xml文件(此为folder.xml文件),随后对文件夹的各种管理操作均通过读写该xml文件来进行,以下方法就实现了新建文件夹时设置信息的存储:
public void CreateXmlOrAddFrag(string xmlFullPath,string
|