论文部分内容阅读
1 引言
随着Internet的飞速发展,基于WEB的应用系统层出不穷。在日常生活和办公环境中,我们经常需要通过网络存放文件或者共享数据,常见的FTP、E-mail、MSN/QQ等都能实现文件的传送,但是各有优缺点。其中,“Ftp”功能最为强大,但使用起来比较麻烦,通常需要安装专用客户端软件,适合大批量集中传输文件的情况;“E-mail”的传送比较方便,易使用,但是附件文件有限,适合文件小、数量少的文件传输情况;MSN/QQ使用方便、实时传递信息,但需要双方同时在线,也不宜传输大容量数据。网络硬盘综合了以上各种工具的诸多优点,不仅是一种功能强大、操作便捷、大容量、异步存储的工具,更可以共享数据,方便管理用户操作权限。
网络硬盘是一种当前流行的基于WEB的应用系统,它除了文件传输、存储等功能外,独特的分享、分组功能更是突破了传统存储的概念,具有无需携带、随时随地、操作便捷、分组管理、四级共享(组内共享、组间共享、全员共享、超级共享)、稳定安全等特点。
本文就是根据自己的实际开发经验来研究与实现用ASP.NET编程实现网络硬盘的具体方法和步骤。
2 网络硬盘主要功能的实现方法
(1)用户注册及登录
初次使用网络硬盘的用户有两种方式登录系统,一种是用户先注册由系统管理员审核通过后登录系统,另一种是由管理员指定每个用户的初始用户名与密码,用户登录后再修改用户名与密码。
注册时根据管理员后台参数设置,可限制同一IP不能同时注册、注册时要验证邮箱的信息等等。
登录时根据管理员后台参数设置,提示用户未审核、用户已被锁定、用户有效期已过等等。
若登录成功后进入系统主界面,该区域就是用户自己的空间管理区,在这里可以进行类似资源管理器中的各种操作。
(2)用户管理
要想让用户按章办事,有条不紊,必须对所有用户进行统一管理。系统管理员只要输入特定的用户名与密码即可登录进入系统后台管理区域,可以输入用户名来快速查找一个用户并对其进行操作。具体操作项如下:
锁定用户,正常情况下用户处于解锁状态,可以正常登录,若遇特殊情况,系统管理员可以锁定某一用户,被锁定的用户将不能再登录直到被解锁。
审核用户,注册用户首先需要审核注册信息,若审核通过就可以正常通过身份验证登录系统,若未通过管理员审核,将不能登录。
添加用户,若用户数量少并且固定,就没有必要让用户自己注册,主要系统管理员在后台手工添加即可。通过此种方式添加的用户即可生效,不必再进行审核。
删除用户,有时某一用户离开或不再使用网络硬盘,为了节省空间需要删除该用户,此用户的所有文件和数据库中相应的内容将会一并删除。
(3)文件/文件夹操作及管理
用户登录之后首次出现的区域便是自己的网络硬盘管理区,在这里可以进行类似资源管理器中的各种操作。在管理区左上方点“新建文件夹”即可新建一个文件夹(目录),点“上传文件”即可上传多个文件在此目录下。此操作区显示所有已上传的文件信息,如名称、类型图标、大小和更新日期,还可以对此文件/文件夹进行删除和重命名操作,同时也可以复制、剪切、粘贴文件,若要下载此文件直接点击文件名即可下载到本地硬盘。
ASP.NET远程创建新文件夹和在本地机操作完全一样,.NET的IO名字空间提供了专门操作目录的类库Directory,通过调用其方法Directory.CreateDirectory(string directory)就可以实现,其中字符串directory表示新建文件夹的完整路径。
/// <summary>
/// 新建文件夹
/// </summary>
public void CreateDirectory_Click(object sender, System.EventArgs e)
{
try
{
//创建目录
Directory.CreateDirectory(Path.Combine(FolderPath.Value, myFolder.Text.ToString()));
}
catch (Exception ex)
{
//显示错误信息
ErrorText.Text = ex.Message;
return;
}
ClientScript.RegisterStartupScript(this.GetType(), "msg", "<script>alert('文件夹已经创建!');</script>");
//刷新上级目录
DisplayList(FolderPath.Value);
return;
}
同理,调用类库Directory其他方法可以实现如下功能:
● 删除目录(Delete)
● 移动目录(Move)
● 确定某个目录是否存在(Exists)
● 获得特定目录的子目录和(或)文件列表(GetFileSystemEntries)
除了Directory类之外,.NET的IO名字空间也提供了专门操作文件的类库File、FileInfo,调用其相应方法可以实现如下功能:
● 复制文件(Copy)
● 删除文件(Delete)
● 移动文件(Move)
● 检索文件创建时间和属性(CreationTime、Attributes)
(4)文件及目录共享
网络硬盘最大的特点就是文件及目录共享,用户只要选择多个目录或文件后点击“共享”图标,并且设置共享权限即可。共享权限根据实际需要来划分,如组内共享、组间共享、全员共享、超级共享;只读共享、读写共享、完全共享等。该功能需要配合数据库来实现,保存共享权限,用户再根据共享权限进行相应操作。
(5)文件上传与下载
网络硬盘上的文件绝大多数是用户上传上去的,普遍的做法是提供一个供用户上传文件的页面,通过设置参数来确定一次最多可上传的文件数及允许上传文件的类型,此种方法只能单文件上传。
在实际应用过程中,往往需要批量上传文件或将某个文件夹上传上去,经过研究与实践探索出另外一种方法,就是解压与断点续传相结合的方法。实际上,NET的Compression名字空间也提供了专门压缩与解压文件的类库GZipStream,调用其相应方法可以实现如下功能:
//以二进制方式打开压缩文件
using (BinaryReader BFile = new BinaryReader(File.OpenRead(ZipFile)))
//开始解压文件
using (GZipStream myGZS = new GZipStream(BFile.BaseStream, CompressionMode.Decompress))
//分配解压缓冲区
byte[] myBuffer = new byte[BFile.ReadInt32()];
//保存解压文件
using (BinaryWriter outFile = new BinaryWriter(File.Create(strOut)))
outFile.Write(myBuffer, 0, myBuffer.Length);
除了上述方法之外,也可以采用第三方软件如SharpZipLib,其功能更加强大。
虽然网络硬盘的上传文件功能必不可少,但下载文件也同样重要,甚至有时需要下载多个文件或下载整个文件夹下的所有文件,如果这时再一个一个下载就不是很好的方法了。按照上面介绍的思路,可以考虑先压缩成一个文件然后再下载。可以利用.NET的类库GZipStream来编写,也同样可以利用第三方软件SharpZipLib来编写。
3 小结
通过本例可知,网络硬盘的开发涉及到了ASP.NET多方面的编程知识,是学习与应用ASP.NET的优秀实例。本文只是抛砖引玉,分析了网络硬盘的主要功能及其实现方法,其他辅助功能如换肤、查找文件、公告、留言等,可以根据实际需要添加上去,只要能举一反三、巧妙构思、灵活运用,就可以实现强大的功能,就可以编制出更完善更实用的应用程序。
以上方法均在WIN2000 SERVER + IIS + .NET2.0环境下得到很好的验证。
参考文献
[1]李应伟,姚素霞,景丽.ASP.NET数据库高级教程(C#篇).清华大学出版社,2004,7.
[2]章立民.用实例学ASP.NET.电子工业出版社,2004,1.
[3]苏红超.ASP.NET深入解析.科学出版社,2003,10.
随着Internet的飞速发展,基于WEB的应用系统层出不穷。在日常生活和办公环境中,我们经常需要通过网络存放文件或者共享数据,常见的FTP、E-mail、MSN/QQ等都能实现文件的传送,但是各有优缺点。其中,“Ftp”功能最为强大,但使用起来比较麻烦,通常需要安装专用客户端软件,适合大批量集中传输文件的情况;“E-mail”的传送比较方便,易使用,但是附件文件有限,适合文件小、数量少的文件传输情况;MSN/QQ使用方便、实时传递信息,但需要双方同时在线,也不宜传输大容量数据。网络硬盘综合了以上各种工具的诸多优点,不仅是一种功能强大、操作便捷、大容量、异步存储的工具,更可以共享数据,方便管理用户操作权限。
网络硬盘是一种当前流行的基于WEB的应用系统,它除了文件传输、存储等功能外,独特的分享、分组功能更是突破了传统存储的概念,具有无需携带、随时随地、操作便捷、分组管理、四级共享(组内共享、组间共享、全员共享、超级共享)、稳定安全等特点。
本文就是根据自己的实际开发经验来研究与实现用ASP.NET编程实现网络硬盘的具体方法和步骤。
2 网络硬盘主要功能的实现方法
(1)用户注册及登录
初次使用网络硬盘的用户有两种方式登录系统,一种是用户先注册由系统管理员审核通过后登录系统,另一种是由管理员指定每个用户的初始用户名与密码,用户登录后再修改用户名与密码。
注册时根据管理员后台参数设置,可限制同一IP不能同时注册、注册时要验证邮箱的信息等等。
登录时根据管理员后台参数设置,提示用户未审核、用户已被锁定、用户有效期已过等等。
若登录成功后进入系统主界面,该区域就是用户自己的空间管理区,在这里可以进行类似资源管理器中的各种操作。
(2)用户管理
要想让用户按章办事,有条不紊,必须对所有用户进行统一管理。系统管理员只要输入特定的用户名与密码即可登录进入系统后台管理区域,可以输入用户名来快速查找一个用户并对其进行操作。具体操作项如下:
锁定用户,正常情况下用户处于解锁状态,可以正常登录,若遇特殊情况,系统管理员可以锁定某一用户,被锁定的用户将不能再登录直到被解锁。
审核用户,注册用户首先需要审核注册信息,若审核通过就可以正常通过身份验证登录系统,若未通过管理员审核,将不能登录。
添加用户,若用户数量少并且固定,就没有必要让用户自己注册,主要系统管理员在后台手工添加即可。通过此种方式添加的用户即可生效,不必再进行审核。
删除用户,有时某一用户离开或不再使用网络硬盘,为了节省空间需要删除该用户,此用户的所有文件和数据库中相应的内容将会一并删除。
(3)文件/文件夹操作及管理
用户登录之后首次出现的区域便是自己的网络硬盘管理区,在这里可以进行类似资源管理器中的各种操作。在管理区左上方点“新建文件夹”即可新建一个文件夹(目录),点“上传文件”即可上传多个文件在此目录下。此操作区显示所有已上传的文件信息,如名称、类型图标、大小和更新日期,还可以对此文件/文件夹进行删除和重命名操作,同时也可以复制、剪切、粘贴文件,若要下载此文件直接点击文件名即可下载到本地硬盘。
ASP.NET远程创建新文件夹和在本地机操作完全一样,.NET的IO名字空间提供了专门操作目录的类库Directory,通过调用其方法Directory.CreateDirectory(string directory)就可以实现,其中字符串directory表示新建文件夹的完整路径。
/// <summary>
/// 新建文件夹
/// </summary>
public void CreateDirectory_Click(object sender, System.EventArgs e)
{
try
{
//创建目录
Directory.CreateDirectory(Path.Combine(FolderPath.Value, myFolder.Text.ToString()));
}
catch (Exception ex)
{
//显示错误信息
ErrorText.Text = ex.Message;
return;
}
ClientScript.RegisterStartupScript(this.GetType(), "msg", "<script>alert('文件夹已经创建!');</script>");
//刷新上级目录
DisplayList(FolderPath.Value);
return;
}
同理,调用类库Directory其他方法可以实现如下功能:
● 删除目录(Delete)
● 移动目录(Move)
● 确定某个目录是否存在(Exists)
● 获得特定目录的子目录和(或)文件列表(GetFileSystemEntries)
除了Directory类之外,.NET的IO名字空间也提供了专门操作文件的类库File、FileInfo,调用其相应方法可以实现如下功能:
● 复制文件(Copy)
● 删除文件(Delete)
● 移动文件(Move)
● 检索文件创建时间和属性(CreationTime、Attributes)
(4)文件及目录共享
网络硬盘最大的特点就是文件及目录共享,用户只要选择多个目录或文件后点击“共享”图标,并且设置共享权限即可。共享权限根据实际需要来划分,如组内共享、组间共享、全员共享、超级共享;只读共享、读写共享、完全共享等。该功能需要配合数据库来实现,保存共享权限,用户再根据共享权限进行相应操作。
(5)文件上传与下载
网络硬盘上的文件绝大多数是用户上传上去的,普遍的做法是提供一个供用户上传文件的页面,通过设置参数来确定一次最多可上传的文件数及允许上传文件的类型,此种方法只能单文件上传。
在实际应用过程中,往往需要批量上传文件或将某个文件夹上传上去,经过研究与实践探索出另外一种方法,就是解压与断点续传相结合的方法。实际上,NET的Compression名字空间也提供了专门压缩与解压文件的类库GZipStream,调用其相应方法可以实现如下功能:
//以二进制方式打开压缩文件
using (BinaryReader BFile = new BinaryReader(File.OpenRead(ZipFile)))
//开始解压文件
using (GZipStream myGZS = new GZipStream(BFile.BaseStream, CompressionMode.Decompress))
//分配解压缓冲区
byte[] myBuffer = new byte[BFile.ReadInt32()];
//保存解压文件
using (BinaryWriter outFile = new BinaryWriter(File.Create(strOut)))
outFile.Write(myBuffer, 0, myBuffer.Length);
除了上述方法之外,也可以采用第三方软件如SharpZipLib,其功能更加强大。
虽然网络硬盘的上传文件功能必不可少,但下载文件也同样重要,甚至有时需要下载多个文件或下载整个文件夹下的所有文件,如果这时再一个一个下载就不是很好的方法了。按照上面介绍的思路,可以考虑先压缩成一个文件然后再下载。可以利用.NET的类库GZipStream来编写,也同样可以利用第三方软件SharpZipLib来编写。
3 小结
通过本例可知,网络硬盘的开发涉及到了ASP.NET多方面的编程知识,是学习与应用ASP.NET的优秀实例。本文只是抛砖引玉,分析了网络硬盘的主要功能及其实现方法,其他辅助功能如换肤、查找文件、公告、留言等,可以根据实际需要添加上去,只要能举一反三、巧妙构思、灵活运用,就可以实现强大的功能,就可以编制出更完善更实用的应用程序。
以上方法均在WIN2000 SERVER + IIS + .NET2.0环境下得到很好的验证。
参考文献
[1]李应伟,姚素霞,景丽.ASP.NET数据库高级教程(C#篇).清华大学出版社,2004,7.
[2]章立民.用实例学ASP.NET.电子工业出版社,2004,1.
[3]苏红超.ASP.NET深入解析.科学出版社,2003,10.