网络硬盘的设计与实现

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

目录
摘要................................................. 错误!未定义书签。

Abstract .............................................. 错误!未定义书签。

第一章绪论 ........................................ 错误!未定义书签。

1.1网络硬盘的产生 .......................................... 错误!未定义书签。

1.2 比较几种常见的传输方式.................................. 错误!未定义书签。

第二章 语言的特点............................... 错误!未定义书签。

2.1 微软.NET的简介 ......................................... 错误!未定义书签。

2.1.1 微软.NET的介绍 ....................................... 错误!未定义书签。

2.1.2 平台带来的重要意义 ...................... 错误!未定义书签。

2.1 技术框架 ........................................ 错误!未定义书签。

2.1.1 技术平台总览 .................................. 错误!未定义书签。

2.2.2 传统的请求/响应模式................................... 错误!未定义书签。

2.2.3 改进后的请求/响应模式................................. 错误!未定义书签。

2.2.4 XML、Web Service和SOAP ............................... 错误!未定义书签。

第三章 Internet网络硬盘的设计........................... 错误!未定义书签。

3.1 需求分析................................................ 错误!未定义书签。

3.2 模块设计................................................ 错误!未定义书签。

3.3.1 总体设计.............................................. 错误!未定义书签。

3.2.2 详细设计.............................................. 错误!未定义书签。

3.2.2.1 登陆界面............................................ 错误!未定义书签。

3.2.2.2 私人文件界面........................................ 错误!未定义书签。

3.2.2.3 共享文件界面........................................ 错误!未定义书签。

3.2.2.4 使用说明界面........................................ 错误!未定义书签。

3.2.2.5 离开界面............................................ 错误!未定义书签。

结论................................................. 错误!未定义书签。

参考资料.............................................. 错误!未定义书签。

致谢 ................................................ 错误!未定义书签。

附录论文源代码....................................... 错误!未定义书签。

网络硬盘的设计与实现
摘要
随着网络技术的日益普及和信息化建设的重视,网络硬盘作为一种新型安全的网络存储系统,已越来越受到人们的重视和喜欢。

所谓“网络硬盘”,就是将服务器的磁盘空间提供给用户使用,用户可以通过它在互联网上实现文件的上传,下载和删除以及文件夹的创建与删除。

并可以通过共享文件实现文件的网络共享。

实际要求是在客户端完成对服务器系统文件或文件夹的访问,创建和删除等功能。

本网络硬盘用编程实现以上功能。

通过IIS(Internet信息服务)建立虚拟目录,实现服务器的建立。

以Web网页的形式呈现,通过HTTP协议,URL访问,即上网登陆的方式实现网络硬盘的功能。

关键词:网络硬盘,存储空间,HTTP,上传,下载, IIS
Abstract
第一章绪论
1.1 网络硬盘的产生
在现实生活中经常有许多电子文件需要处理,比如在家庭电脑上做的项目要拿到公司去运行,需要将自己的文件、作品传输到其他的Internet用户,要实现某些文件的共享等。

如果每天拿个移动硬盘或U盘进行文件的传输的话,有很多缺点,比如经常会因为容量问题而无法实现,有时候会因为遗忘而带来很大的不方便。

解决这种问题的方法最好的是通过网络来实现文件的传输。

网络的主要功能是实现文件的共享与信息传输,Internet的出现与发展使得各种文件的传输工具成为了现实生活中必不可少的工具。

比如:E-Mail,ftp文件传输,网上邻居,以及最近网络硬盘等。

1.2 比较几种常见的传输方式
现在流行的有几种文件的传输方式,在下面做些简单的比较。

E-Mail:
优点:能很方便的实现用户间的通信,使用简便,应用广泛。

缺点:共享性不强,如果共享就无法实现安全性。

比如:在局域网内部,财务、劳资等文件资料需要通过这种方式交流不是好办法。

对文件的传输必须用附件的形式发送,文件大小受到限制。

ftp文件传输:
优点:对文件的处理功能强大。

缺点:使用起来稍显复杂。

一大堆的设置足以让许多人望而却步,尤其数量不可预见性,针对特殊用户需求用户的设置就更加繁琐。

网上邻居:
优点:通过在本机上指定共享的Web文件并设置文件,一定范围内用户可以访问到这些资源。

缺点:这种方式使用范围相当有限,通常在同一DNS段地址内的用户可以顺利访问。

尤其在Internet用户很难使用,而且使用不直观。

网络硬盘:
是一种当前流行的一种主页服务内容,它可以作为商务工作人员的随身秘书,随时随地的对电子文档进行处理,而无须随身携带大量的文稿信息,同时还可以随时随地的把新的任务保存在网络硬盘里面。

它主要侧重个人文件的存储,共享,发送等各式的网络文件管理。

现在流行的网络硬盘有很多种,比如QQ,Y ahoo 等都有网络硬盘产品,很多智能办公系统也都有网络硬盘选项。

但是其共享性我感觉并不是很好,像QQ 硬盘,自己的私有文件就很难给别的用户看到。

鉴于以上特点,我的开发语言采用的是,下面介绍一下语言的相关特点。

第二章语言的特点
2.1微软.NET简介
2.1.1 微软.NET的介绍
MicroSoft .NET平台包括用于创建和操作新一代服务的.NET基础结构和工具;可以启用大量客户机的.NET User Experience;用于建立新一代高度分布式的数以百万计的.NET 积木式组件服务;以及用于启用新一代智能互联网设备的.NET设备软件。

MicroSoft .NET产品和服务—包括,连同建立积木式服务的核心集成套件;MSNTM .NET;个人订购服务;;Visual Studio .NET;以及用于.NET的bCentralTM。

.Net环境中的突破性改进在于:
a)使用统一的Internet标准(如XML)将不同的系统对接;
b)这是Internet上首个大规模的高度分布式应用服务架构;
c)使用了一个名为“联盟”的管理程序,这个程序能全面管理平台中运行的服务
程序,并且为它们提供强大的安全保护后台;
.NET平台包括如下组件:
a)用户数据访问技术。

其中包括一个新的基于XML的、以浏览器为组件的混合信息
架构,叫做“通用画板”;
b)基于Windows DNA 2000的构建和开发工具;
c)一系列模块化的服务,其中包括认证、信息传递、存储、搜索和软件送递功能;
2.1.2 平台带来的重要意义
MicroSoft .NET的策略是将互联网本身作为构建新一代操作系统的基础,对互联网和操作系统的设计思想进行合理延伸。

这样,开发人员必将创建出摆脱设备硬件束缚的应用程序,以便轻松实现互联网连接。

MicroSoft .NET无疑是当今计算机技术通向计算时代的一个非常重要的里程碑。

.NET核心组件:
·一组用于创建互联网操作系统的构建块,其中包括(用于用户认证)以及用于文件存储的服务、用户首选项管理、日历管理以及众多的其它任务·构建和管理新一代服务的基本结构和工具,包括Visual 、.NET企业服务器、.NET框架和
·能够启用新型智能互联网设备的.NET设备软件
·.NET用户体验
2.2 技术框架
技术平台总览
从时代起,微软公司针对基于Web的开发推出了全新的Web Form概念,也就是说可以象开发普通的Win Form一样来进行Web应用程序的开发,从而可以享
受真正的RAD (快速应用程序系开发)优势。

而此时任何一个竞争对手都远不能达到这个程度,包含SUN 公司的JSP 语言。

平台带给我们的 技术不仅是一个ASP的升级换代,而是一个崭新的WEB开发技术平台。

有许多普通Win Form 应用程序所不能拥有的纵多特性,如移动商务支持,跨物理时空的数据存取等。

2.2.2传统的请求/响应模式
总体上来说, 提供了一个解析处理客户端设备(浏览器,移动设备)同Web 服务器(一般是IIS)之间的交互的技术平台。

目前的客户端同服务器的交互方式常规的情况是请求/响应模式,如图2.2所示。

从图上可以看出,客户端的请求(Get/Post 方式)到Web 服务器,此时Web 服务器相应的监听进程酒会负责处理这个来自客户端的请求,它有可能需要同文件系统同或数据库打交道,以便取得客户端需要的数据,最后Web 服务器负责将处理结果返回给客户端的设备。

响应处理
图2.2的HTTP请求/响应模式
2.2.3 改进后的请求/响应
HTTP协议是一种无连接的协议,Web服务器采用这种处理方式是最佳的,但是技术能将请求/响应模式巧妙地隐藏起来。

在技术中,Web服务器返回给客户端设备的数据隐藏了一个ViewState区域。

在这个区域中保存了经过编码的同Web服务器交互所记录的状态数据,这样当客户端设备再次同Web服务器交互时,Web服务器就可以通过解析这个隐藏的数据来还原上次的“访问情况”,从而可以始终做到连接的请求/响应模式。

改进后的处理过程如图2.3所示。

2.2.4 XML 、Web Service和SOAP
XML是这几年Web开发技术关注的焦点,很多当前最前沿的技术,如Web Service、SOAP等都建立在XML技术之上。

可以说XML是当前Web开发技术的基石。

XML的英文全称是eXtensibler Markup Languang,中文解释是可扩展标记语言。

设计目标是:
XML可直接用于Internet。

XML支持大量不同应用。

XML与SGML兼容。

处理XML文件的程序容易编写。

XML的可选项无条件地保持最小,理想状态下为0个。

XML文件是可以直接阅读的,条理清楚等。

客户端请求
发生错误
图2.3 改进后的请求/响应模式
第三章Internet网络硬盘的设计
3.1需求分析
现实生活中常常要带大量的文稿去工作,由于麻烦和容易遗忘等缺点,网络硬盘做为一种服务主页应运而生,具有很强的生命力,特点第一章以讲过,不重复。

3.2模块设计
3.2.1 总体设计
本程序是用设计的,Web窗体的设计是设计的重点。

如图3.1所示:
3.2.2详细设计
3.2.2.1登陆界面LoginPage.aspx
登陆页面如图3.2所示:
分三种用户:admin,guest。

这两个固定的用户:admin对网络硬盘的管理拥有完全权限,所有文件都有权进行处理;guest只是游客身份,基本无权限。

第三种用户为新用户,通过注册来实现。

guest密码12345.
点击登陆按钮时触发,在数据库(SQL Server 2000)里面的用户数据库Users,与里面用户信息表格进行比较,存在则登陆,否则错误提示。

主要代码如下所示:
private void btnLogin_Click(object sender, System.EventArgs e)
{
string connString="server=(local);uid=sa;pwd=123;database=Users";
SqlConnection conn=new SqlConnection(connString);
string sqlString="select * from UsersInfo where name='"+txtUser.Text+"' and
password='"+txtPwd.Text+"'";
string sqlString1="select * from UsersInfo where name='"+txtUser.Text+"'";
conn.Open();
SqlDataAdapter adapter1=new SqlDataAdapter(sqlString1,conn);
SqlDataAdapter adapter=new SqlDataAdapter(sqlString,conn);
DataSet ds1=new DataSet();
DataSet ds=new DataSet();
adapter1.Fill(ds1,"Users1");
adapter.Fill(ds,"Users");
conn.Close();
if(ds1.Tables[0].Rows.Count==0)
{
Response.Write("<script>window.alert('无此用户,请注册先!');</script>");
}
else if(ds.Tables[0].Rows.Count==0)
{Response.Write("<script>window.alert('密码不对,自己在想想,OK?');</script>");
}
else
{
FormsAuthentication.RedirectFromLoginPage(txtUser.Text,false);
}
}
演示登陆出错如图 3.3所示
图3.3
图3.2登陆界面
注册时错误提示类型如图3.4和3.5所示
图3.4用户名为空时图3.5密码为空时注册时检测用户名是否已经占用,点击注册时检测按钮,结果如图3.6和3.7所示:
图3.6用户名以被注册
图3
.7 用户名没被注册
不存在就可以进行注册,成功后即可登陆。

注册成功提示如图3.8所示
图3.8 注册成功时提示
3.2.2.2私有文件界面 PrivateFile.aspx
此页面的流程如图3.
a) Page_Load 里面,根据登陆名的不同对权限和跟目录进行处理。

private void Page_Load(object sender, System.EventArgs e) { // 在此处放置用户代码以初始化页面 if (Page.IsPostBack==false ) { LoginName.Text=; if (LoginName.Text=="admin") {
PrivatePath=@"e:\PrivateDir";
LoginPath=@"e:\PrivateDir"; }
else if (LoginName.Text=="guest")//guest 屏蔽许多按钮的使用功能 { PrivatePath=@"e:\PrivateDir"; LoginPath=@"e:\PrivateDir"; BtnUpLoad.Enabled=false ; BtnNewDir.Enabled=false ;
BtnDelete.Enabled=false ;
changeA.Enabled=false ; BtnOpen.Enabled=false ; } else {
PrivatePath=@"e:\PrivateDir"+@"\"+LoginName.Text;
LoginPath=@"e:\PrivateDir"+@"\"+LoginName.Text;
}
nowDir.Text=PrivatePath;
if(Directory.Exists(PrivatePath)==false)
{Directory.CreateDirectory(PrivatePath);}
LoadDir(PrivatePath); //初始化装入目录
}
}
里面调用到LoadDir主要通过数据绑定,讲当前目录下的文件和文件夹的内容作为数据源跟ListBox进行绑定,
在根据把跟目录设置为Static属性,从而达到随时跟踪当前路径的功能。

主要代码如下:ArrayList values = new ArrayList();
string [] MyFiles,MyDirs;
MyFiles = Directory.GetFiles(NowPath); //得到该目录下所有文件
values.AddRange(MyFiles); //加入文件
MyDirs= Directory.GetDirectories(NowPath); //得到该目录下所有目录
values.AddRange(MyDirs); //加入目录
FileList.DataSource=values; //设定数据源
FileList.DataBind(); //绑定数据
每次加载对文件的使用情况进行统计在页面上显示,并显示登陆的用户名在最上端,初始页面如图3.10
统计容量用到计算文件容量的函数FolderSize(string Path),代码如下
public static long FolderFileSize(string path)//计算文件的长度,B为单位
{
long size = 0;
FileInfo [] files = (new DirectoryInfo(path)).GetFiles();
foreach(FileInfo file in files)
{
size += file.Length;
}
return size;
}
public static long FolderSize(string path)//计算文件的长度,单位为B
{
long Fsize = 0;
Fsize = FolderFileSize(path);
DirectoryInfo [] folders = (new DirectoryInfo(path)).GetDirectories();
foreach(DirectoryInfo folder in folders)
{
Fsize += FolderSize(folder.FullName);
}
return Fsize; }
b) 删除按钮 BtnDelete_Click
主要是用DeleteThing(string NowPath)函数,主要代码如下:
if(NowPath.IndexOf(".")>0) //删除文件
{
File.Delete(NowPath);
LoadDir(PrivatePath); //重新载入当前目录
}
else//删除目录
{ //File.SetAttributes(NowPath,FileAttributes.ReadOnly);
Directory.Delete(NowPath,true);
Response.Write("<script>window.alert('你删除的是文件夹,
目录下所有数据将丢失!');</script>");
LoadDir(PrivatePath); //重新载入当前目录
}
删除时如为文件属性如ReadOnly则不能删除,这时要改变属性,删除提示如图3.11、 3.12和3.13
图3.11 删除文件时图3.12 删除文件文件夹成功
图3.13删除失败时
c) 更改文件属性 changeA_Click
用File.SetAttributes实现改变属性,代码如下:
if (btnReadOnly1.Checked!=true&&btnHidden1.Checked!=true)//只读和隐藏都不选
{ //File f=new File(FileList.SelectedItem.Text);
File.SetAttributes(FileList.SelectedItem.Text,FileAttributes.Normal);
}
else
{
if (btnReadOnly1.Checked==true)
{
if(btnHidden1.Checked==false)
File.SetAttributes(FileList.SelectedItem.Text,FileAttributes.ReadOnly);//选只读,不隐藏
else
File.SetAttributes(FileList.SelectedItem.Text,
FileAttributes.Hidden|FileAttributes.ReadOnly);//隐藏,只读
}
else
{
if(btnHidden1.Checked==true)
File.SetAttributes(FileList.SelectedItem.Text,FileAttributes.Hidden);//隐藏,不只读
}
}
更改只读属性为无即可删除原来的只读文件。

d) 上传文件 BtnUpLoad_Click
上传即把客户端文件传送到服务器系统文件夹中,先用“\“把上传的文件分成几个字符串数组,取最后一个即为文件名,在把它加到当前路径后面,即可得到此文件保存的路径,在用File 的SaveAs函数实现文件的保存。

代码如下:
char[] spliter = {'\\'};
string [] FileName =WebFile.PostedFile.FileName.Split(spliter,10);
FileInfo f=new FileInfo(WebFile.PostedFile.FileName);
//Response.Write(test);
long size=f.Length;
string test;
string NowPath = PrivatePath + @"\" + FileName[FileName.Length-1];
通过浏览来实现上传如图3.14
注意三个问题:
1.文件大小,直接用File.Length求得,再将单位B转换为KB,MB等,代码如下:if(size<1024)
Response.Write("上传的文件大小为"+size+"B");
else if(1024<=size&&size<1048576)
Response.Write("上传的文件大小"+size/1024.0f+"KB");
else Response.Write("上传的文件"+size/1048576.0f+"MB");
WebFile.PostedFile.SaveAs(NowPath);
Response.Write("<script>window.alert('上传成功');</script>");
LoadDir(PrivatePath);
2.上传的大小限制,设定为小于3M才能上传if(f.Length<3145728) //3M 3.注意上传时候的同名情况,同名换名字在上传,代码如下:
Response.Write("<Script language-Javascript>");
Response.Write("alert('同名,换名字后再上传')");
Response.Write("</script>");
问题提示信息如图3.15、3.16
图3.15文件大于3M 图3.16文件同名
图3.17上传成功同时显示信息
图3.14上传时浏览文件
e)打开或者下载文件 BtnOpen_click
通过FileList.SelectedItem.Text.IndexOf(".")>0来判断是文件还是文件夹
当为false是为文件夹:
对文件夹的打开是将把打开的文件夹路径设为当前路径,主要代码:
PrivatePath=FileList.SelectedItem.Text;
LoadDir(FileList.SelectedItem.Text);
if(FileList.SelectedIndex.Equals(-1))
nowDir.Text+=" 此文件夹为空";;
当为true时是文件,调用函数FileDownLoad(string FullFileName)
函数代码主要如下:
private void FileDownload(string FullFileName)//下载
{
FileInfo DownloadFile = new FileInfo(FullFileName); //设置要下载的文件
Response.Clear(); //清除缓冲区流中的所有内容输出
Response.ClearHeaders(); //清除缓冲区流中的所有头
Response.Buffer = false; //设置缓冲输出为false
//设置输出流的HTTP MIME 类型为application/octet-stream
Response.ContentType = "application/octet-stream";
//将HTTP 头添加到输出流
Response.AppendHeader("Content-Disposition",
"attachment;filename=" +
HttpUtility.UrlEncode(DownloadFile.FullName,
System.Text.Encoding.UTF8));
Response.AppendHeader("Content-Length", DownloadFile.Length.ToString());
//将指定的文件直接写入HTTP 内容输出流。

Response.WriteFile(DownloadFile.FullName);
Response.Flush(); //向客户端发送当前所有缓冲的输出
Response.End(); //将当前所有缓冲的输出发送到客户端}
打开文件时的时候如图3.18
图3.18打开文件
点保存,如图3.19
图3.19保存文件
点打开根据文件不同类型而不同。

(略)
f) 新建文件夹 BtnNewDir_Click
用Directory.CreateDirextory(string path)实现文件的创建,以输入的文件名加到当前路径的
后面作为文件夹的路径,同时设置路径,判断同名,在LoadDir,重新载入画面。

代码如下:1.同名:
if(Directory.Exists(FullDirName))
{Response.Write("<script>window.alert('已存在,请更改名称!');</script>");
return; }
属性
if (chkReadOnly.Checked==true)
{ if(chkHidden.Checked==false)
DirInfo.Attributes = FileAttributes.ReadOnly;
else
DirInfo.Attributes = FileAttributes.ReadOnly|FileAttributes.Hidden; }
3.新建
DirectoryInfo DirInfo = Directory.CreateDirectory(FullDirName);
新建时同名提示如图3.20
图3.20文件夹以存在
e)返回上级菜单
返回选中文件的父目录,并把它设置成当前路径。

代码如下:
private void BtnUp_Click(object sender, System.EventArgs e)//返回上级目录
{
string ParentPath=Directory.GetParent(PrivatePath).ToString();
LoadDir(ParentPath);
return;
}
3.2.2.2共享界面
共享界面的代码和页面形式跟私有文件很相似。

不同点如下:
3.3私有文件有个跟目录ShareDir.
3.4私有文件界面不限制用户的使用,除了guest以外。

只要是登陆的用户都可以在此截
面进行文件的上传,下载和文件夹的创建,删除等。

共享界面如图3.21所示
图3.21共享界面
共享界面用于不同用户之间实现文件的传递与共享,但是上传文件大小受到限制当文件大于3M时,上传不能成功。

3.2.2.3使用说明界面
这个界面对网络硬盘的使用规则进行了概述。

界面如图3.22所示:
图3.22使用说明界面
3.2.2.4离开界面
离开界面有版权说明和离开按钮。

如图3.23所师:
图3.23离开界面
随着网络技术的日益普及和信息化建设的重视,网络硬盘作为一种新型安全的网络存储系统,主要适用于个人文件存储,可以用作个人的一个网络U盘,网络硬盘是一块专属的存储空间,用户通过上网登录网站的方式,可方便上传、下载文件。

只要能上网,就可以用网络硬盘登录到服务器上进行个人文件的上传、删除及文件目录的新建、修改、共享等操作,随时随地存储自已的个人文件。

网络硬盘作为一种当前流行的主页服务,是由于有很多这一方面的需求,所以现在流行的网络硬盘也有很多。

像QQ网络硬盘,yahoo公文包,很多,但是由于服务器设立的昂贵等原因,许多免费网络的网络硬盘已经开始收费,恐怕怎么让用户觉得物有所值才是应主要考虑的事情。

做到这一点也许不只是界面的花俏,在现在这样的社会,我认为需要的速度和方便。

要从速度上解决网络硬盘的问题,最好用到Web2.0的技术,如AJAX(基于XML 的异步Javascript),利用无刷新技术,可明显地提高网速。

通过对本毕业论文的设计,我对网络知识有更深的认识,对FTP文件系统,HTTP 协议,对网页的设计,对C/S结构有更深的认识。

并基本掌握了(C#)的许多知识,尤其是File 和Directory两个类的属性、方法很熟悉,能建立多文件系统。

对很多OA(智能办公系统)和网站加上网络硬盘的功能,从而方便用户实现网
上文件的管理、共享、保存。

本论文基于现状,采用编程语言作为开发工具,后台代码用微软为.NET量身定做的C#,外加SQL Server 2000数据库实现用户的管理。

力图设计一个切实可行的应用系统方案。

本论文详细的介绍了系统模块设计的开发过程。

尤其是界面的后台文件管理设计,系统集成后,通过测试,证明系统设计是成功有效的。

希望通过本次论文的学习过程,能真正了解编程意义以及更透彻了解网络的工作原理。

[1]数据库高级教程(C#篇)
清华大学出版社李应伟、姚素霞、景丽编著
[2]深入解析
科学出版社苏红超编著
[3]用实例学
电子工业出版社[美]Steven A.Smith等著[4]C#教程
北京希望电子出版社沉舟崔培枝编著
致谢
感谢学校给我这次能真正体会的软件设计与实现的的机会,让我四年学习的知识能有个总结与更深的体会,感谢程凡老师从论文设计到实现对我论文的辅导与帮助。

学校机房提供了一个免费做程序的地方,让我可以完整地完成我的论文,感谢学校里的帮助。

还有很多老师对论文的意见与指导,以及朋友们对我安心做论文做出的帮助。

相关文档
最新文档