网络硬盘开发细节及技术关键点
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;
//返回数据表
}
2、创建文件夹及设置访问权限
在当前路径下输入新文件夹名称来创建新文件夹,通过调用.net的IO名字空间中的类库 Directory方法来实现该操作:Directory.CreateDirectory(string directory),字符串directory表示新建文件夹的完整路径,该方法默认向所有用户开放新文件夹的完全读写访问权限。对于网络硬盘共享根文 件夹可手动进行创建,并设置写入权限,通过执行"internet信息服务"的"权限向导"来设置访问权限,可以设置密码来指定是否允许用户进入该文件夹 以及是否允许用户删除该文件夹。此外,为了管理这些文件夹,需要保留相关设置信息:如文件夹名、位置、受限操作类型、密码及创建者等。将这些信息写入 XML文件,随后通过读写该XML文件来实现对文件夹的相关操作。
Public void CreateXmlOrAddFrag (string xmlFullPath, string folderFullPath, string owner, string password, int type)
{
XmlDocument xmlDoc=new XmlDocument();
string xml="";
String xmlNode="<character>";
XmlNode+="<full Path>";
XmlNode+=folderFullPath;
XmlNode+="</full Path>";
XmlNode+="<owner>";
XmlNode+=owner;
XmlNode+="</owner>";
xmlNode+="<password>";
xmlNode+=password;
xmlNode+="</password>";
xmlNode+="<type>";
xmlNode+=type;
xmlNode+="</type>";
xmlNode+="</character>";
if(!File.Exists(xmlFullPath))
{
//若不存在则创建xml存储文件 xml="<?xml version=&r
- 51.la

招生简章


