# skydrive **Repository Path**: Lee_queue/skydrive ## Basic Information - **Project Name**: skydrive - **Description**: 计网期末的网盘项目 - **Primary Language**: C++ - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2022-06-24 - **Last Updated**: 2023-03-06 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 问题 1. web和windows的client端,是指分别做一个软件和web吗? 2. 目录结构如何存储? 3. # 需求 1. 登录注册 - 用户注册、登录 - 修改用户名和密码 - 检查用户名重复 - 密码强度要求 2. 网盘维护 - 刷新后实时显示 3. 上传操作 - (本地目录输入框输入)单文件上传,空文件上传,文件夹上传(多层子文件夹) - 秒传(只需要内容完全相同,不需要别的)(需要一个大表存所有文件,使用计数器记录指针个数) - 同一文件多用户上传,暂时不考虑 - 断点续传,暂时不考虑 - web不需要文件夹上传,多用户,断点续传 4. 下载操作 - [ ] 选择存放目录 - [ ] 单文件、空文件、文件夹(多层)下载 - [ ] 秒下 - [ ] 断点续下,暂时不考虑 - [ ] web不需要文件夹、断点、秒下 5. 改名 - [ ] 单文件、空文件改名(注意重名问题) 6. 复制 - [ ] 复制文件、空文件、文件夹(递归),选择粘贴位置(不允许复制到本目录和子目录) - [ ] web只需要单文件、空文件 7. 移动 - [ ] 文件、文件夹(注意递归问题) - [ ] web只文件 8. 删除 - [ ] 文件、文件夹 - [ ] web只文件 # 设计 ## 数据库 ### 逻辑文件(夹)、目录系统、文件系统 | 表项名 | 类型 | 是否是键 | 注释 | | --------- | ---- | -------------------- | --------------------------- | | id | int | 是 | 文件(夹)的唯一标识符 | | file_name | str | | 文件名 | | md5 | str | 外键,连到真实文件表 | 文件的md5码,关联到真实文件 | | parent_id | int | 外键,连到自己 | 指向父目录的id | | is_dir | bool | | 是否为文件 | ### 物理文件 | 表项名 | 类型 | 是否是键 | 注释 | | --------------- | ---- | -------- | ---------------------------- | | md5 | str | 是 | | | (删)real_path | str | | 指向文件在服务器上的存储路径 | | file_size | int | | 文件大小 | | file_link_cnt | int | | 逻辑文件链接数 | ### 用户表 | 表项名 | 类型 | 是否是键 | 注释 | | ------- | ---- | ------------------ | ------------ | | id | int | 是 | 用户id | | name | str | | 用户名 | | passwd | str | | 用户密码md5 | | root_id | int | 外键,连到逻辑表id | 用户的根目录 | ### 待上传文件表 | 表项名 | 类型 | 是否是键 | 注释 | | -------------- | ------ | -------- | ------------------------ | | id | int | 是 | | | u_id | int | | 用户的id | | file_real_path | string | | 用户主机上的真实文件路径 | | md5 | string | | | | file_len | int | | 文件总长度 | | file_pointer | int | | 当前读写指针的位置 | | parent_id | int | | 上传到服务器的哪个地方? | | uploading_dir_id | int | | 该待上传文件对应的待上传文件夹表中的文件夹序号 | ### 待上传文件夹表 | 表项名 | 类型 | 是否是键 | 注释 | | -------------- | ------ | -------- | ------------------------ | | id | int | 是 | | | u_id | int | | 用户的id | | file_real_path | string | | 用户主机上的真实文件路径 | | md5 | string | | | | logic_id | int | | 本目录的逻辑id | | file_now | int | | 传到第几个文件 | | file_count | int | | 一共多少个文件 | ### 待下载文件表 | 表项名 | 类型 | 是否是键 | 注释 | | -------------- | ------ | -------- | ------------------------ | | id | int | 是 | | | u_id | int | | 用户的id | | logic_id | int | | 下载的文件的id | | file_len | int | | 文件总长度 | | file_real_path | string | | 用户主机上的真实文件路径 | | downloading_dir_id | int | | 该待下载文件对应的待下载文件夹表中的文件夹序号 | ### 待下载文件夹表 | 表项名 | 类型 | 是否是键 | 注释 | | -------------- | ------ | -------- | ------------------------ | | id | int | 是 | | | u_id | int | | 用户的id | | file_real_path | string | | 用户主机上的真实文件路径 | | md5 | string | | | | logic_id | int | | 本目录的逻辑id | | file_now | int | | 传到第几个文件 | | file_count | int | | 一共多少个文件 | ## 后端 - c++,解析http请求 # 6.27 - [ ] 写完所有接口 - [ ] 测试普通文件的上传和下载 扩展任务: - [ ] 来点前端 # 6.30 - [x] 单文件上传成功,没有提示 - [x] 文件夹上传时,正常上传完成没有提示 - [x] 文件界面滚动条暂时没有 - [x] 单文件下载:既无提示,也无列表 - [x] 单文件下载:断网后暂停状态不更新 - [x] 文件秒下:没有测试 - [x] 文件夹秒下可以成功:没有提示(提示下载成功) - [x] 下载文件夹:暂停时提示下载完成 - [x] 上传文件夹:点了X以后,会提示上传文件名不正确 - [x] 移入:单文件移动的目录和子目录判断有误 扩展功能: - web端可以复制、移动、删除文件夹