onedump
OneDump 存储空间还是无限制大小的,不过单个文件只有最大5MB,且同时传出10个文件,可用于存储一些文档之类的东西。
网络硬盘的优势网络硬盘(也称共享空间),是服务器上的一块硬盘空间,在这里,如果你具备足够的权限,你可以对它随意操作,就象使用你的本地计算机一样。要知道,这一切以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[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; //返回数据表
}