zoukankan      html  css  js  c++  java
  • 网络硬盘

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

         所谓“网络硬盘”,就是将服务器的磁盘空间提供给用户使用,用户可以通过它在互联网上实现文件的上传,下载和删除以及文件夹的创建与删除。并可以通过共享文件实现文件的网络共享。  实际要求是在客户端完成对服务器系统文件或文件夹的访问,创建和删除等功能。

    网络硬盘的功能要求:

            ● 用户登录、注销、用户注册

            ● 新建文件夹、上传文件

            ● 查看文件属性(包括:名称,所在目录,类型,大小,创建时间)

            ● 删除文件

            ● 更换文件图标(分为大图标和小图标)

            ● 通过搜索找到自己的文件并可以下载

          进入时需有用户名和密码方能进入,有效的保护了文件的机密。

    网络硬盘的开发其实很简单,主要使用了类库Io,用来实现对文件的操作,采取了数据库和物理路径相对应映射的方式完成的,下面就来简单说说其主要的几个点:

    首先是数据库设计这块,根据自己的需求设计出最适合的数据库,我设计的数据库分3个表,T_User,T_FileType,T_FileInfo

    T_User

    T_FileType

    T_FileInfo

    其次,我们知道网络硬盘是满足很多用户的需求的,所以每个用户都有属于自己的空间,这就要求我们在页面中要用登录和注册功能,这里要提到的就是在注册的时候我们就要相应位用户分配空间,名称最好不要直接用登录名,可以采取映射的方式命名,如:用户名是admin,那么物理路径的目录名就可以为adminDir,adminFile等等,主要是从安全方面考虑的,注册完用户后就会在物理空间中显示初始创建的几个文件夹

    下面就是要对文件操作的几点了

    对文件的操作首先要保证数据库与物理路径要保持一致,比如说增加一个文件,物理路径添加了,数据库也要有相应的增加记录才可以,没什么大的问题,在这里把下载的代码贴出来:

        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.Substring(FullFileName.LastIndexOf("\\") + 1),
                System.Text.Encoding.UTF8));
            Response.AppendHeader("Content-Length", DownloadFile.Length.ToString());
            //将指定的文件直接写入 HTTP 内容输出流。
            Response.WriteFile(DownloadFile.FullName);
            Response.Flush();       //向客户端发送当前所有缓冲的输出
            Response.End();         //将当前所有缓冲的输出发送到客户端 
        }

    修改和转移的逻辑很相似,修改目录名称的时候,就是新建一个目录,然后通过子目录移到新目录下面,在数据库中采用递归修改子目录和文件的路径名称,修改文件就更简单了,转移也同样如此...

    多思考,多创新,才是正道!
  • 相关阅读:
    JavaScript function (简单总结)
    JavaScript 数组 (简单总结)
    yum update 和 yum upgrate 区别
    git clone警告,提示Warning:Permission denied (publickey)
    ''退格符号笔记
    MySQL Workbench导出Model提示['ERROR 1064 (42000): You have an error in your SQL syntax....syntax to use near 'VISIBLE']
    《Python编程从入门到实践》--- 学习过程笔记(3)列表
    《Python编程从入门到实践》--- 学习过程笔记(2)变量和简单数据类型
    Windows+MyEclipse+MySQL【连接数据库报错caching_sha2_password】
    测试 | 让每一粒尘埃有的放矢
  • 原文地址:https://www.cnblogs.com/shuang121/p/1958520.html
Copyright © 2011-2022 走看看