协议

  • 登录用户
  • 注册用户
  • 我的文件
    • 我的文件展示页面
      • 服务器返回给前端
      • 秒传
      • 上传文件
  • 共享列表
  • 文件相关操作
    • 分享文件
    • 删除文件
    • pv字段处理
  • 数据库表设计
    • MySQL数据库
      • 用户信息表 user
      • 文件信息表 file_info
      • 用户文件列表user_file_list
      • 用户文件数量表user_file_count
      • 共享文件列表
    • Redis数据表
      • Hash
      • Zset

登录用户

//====================登陆用户
127.0.0.1:80/loginpost数据(json)
{user:xxxx,pwd:xxx
}

注册用户

//====================注册用户
127.0.0.1:80/regpost数据(json)
{userName:xxxx,nickName:xxx,firstPwd:xxx,phone:xxx,email:xxx
}

我的文件

在“我的文件”界面,会显示所有署遇用户的文件列表

  • (右键)点中图标:下载,分享,删除,属性
  • 没选中图标,右键界面空白:按下载量排序/按下载量排序/刷新/上传

我的文件展示页面

127.0.0.1:80/myfiles?cmd=count      //获取用户文件个数
post数据json包如下:
{"user": "yoyo"
}

//获取用户文件信息 127.0.0.1:80/myfiles&cmd=normal
//按下载量升序 127.0.0.1:80/myfiles?cmd=pvasc
//按下载量降序127.0.0.1:80/myfiles?cmd=pvdesc

post数据json包如下:

//start文件位置的起点,count文件的数量,则需要显示0~9位置为文件
{"user": "yoyo""start": 0         //start指的是在从第几个文件开始"count": 10
}

服务器返回给前端

{
"files": [{"user": "yoyo","md5": "e8ea6031b779ac26c319ddf949ad9d8d","time": "2017-02-26 21:35:25","filename": "test.mp4","share_status": 0,"pv": 0,"url": "http://192.168.31.109:80/group1/M00/00/00/wKgfbViy2Z2AJ-FTAaM3As-g3Z0782.mp4","size": 27473666,"type": "mp4"},{"user": "yoyo","md5": "e8ea6031b779ac26c319ddf949ad9d8d","time": "2017-02-26 21:35:25","filename": "test.mp4","share_status": 0,"pv": 0,"url": "http://192.168.31.109:80/group1/M00/00/00/wKgfbViy2Z2AJ-FTAaM3As-g3Z0782.mp4","size": 27473666,"type": "mp4"}]
}/*{"user": "yoyo","md5": "e8ea6031b779ac26c319ddf949ad9d8d","time": "2017-02-26 21:35:25","filename": "test.mp4","share_status": 0,"pv": 0,"url": "http://192.168.31.109:80/group1/M00/00/00/wKgfbViy2Z2AJ-FTAaM3As-g3Z0782.mp4","size": 27473666,"type": "mp4"}*///-- user  文件所属用户//-- md5 文件md5//-- createtime 文件创建时间//-- filename 文件名字//-- shared_status 共享状态, 0为没有共享, 1为共享//-- pv 文件下载量,默认值为0,下载一次加1//-- url 文件url//-- size 文件大小, 以字节为单位//-- type 文件类型: png, zip, mp4……

秒传

 127.0.0.1:80/md5post数据(json){user:xxxx,md5:xxx,fileName: xxx}

上传文件

127.0.0.1:80/uploadpost数据如下:
------WebKitFormBoundary88asdgewtgewx\r\n
Content-Disposition: form-data; user="mike"; filename="xxx.jpg"; md5="xxxx"; size=10240\r\n
Content-Type: application/octet-stream\r\n
\r\n
真正的文件内容\r\n
------WebKitFormBoundary88asdgewtgewx

共享列表

在Qt界面点击“共享列表”,会显示所有当前共享的文件,注意共享的文件其信息是存在MySQL中单独的一张表中,

  • 按中图标:下载、属性、取消分享、转存文件
  • 没有按中图标:刷新

//获取用户文件个数 127.0.0.1:80/sharefiles?cmd=count
//按下载量升序 127.0.0.1:80/sharefiles?cmd=pvasc
//按下载量降序127.0.0.1:80/sharefiles?cmd=pvdesc
post数据json包如下:

//start文件位置的起点,count文件的数量,则需要显示0~9位置为文件
{"start": 0,"count": 10
}{"filename": "test.mp4","pv": 0
}
  • //下载文件pv字段处理
    //127.0.0.1:80/dealsharefile?cmd=pv

  • //取消分享文件
    //127.0.0.1:80/dealsharefile?cmd=cancel

  • //转存文件
    //127.0.0.1:80/dealsharefile?cmd=save

文件相关操作

分享文件

127.0.0.1:80/dealfile?cmd=share
post数据json包如下:
{"user": "xxx","token": "xxx","md5": "xxx","filename": "xxx"
}

删除文件

 //删除文件
127.0.0.1:80/dealfile?cmd=del
post数据json包如下:
{"user": "yoyo","token": "xxx","md5": "xxx","filename": "xxx"
}

pv字段处理

//下载文件pv字段处理
127.0.0.1:80/dealfile?cmd=pv
post数据json包如下:
{"user": "yoyo","md5": "xxx","filename": "xxx"
}

数据库表设计

MySQL数据库

创建数据库名为“dfs”

create database dfs;
use dfs;

用户信息表 user

用户信息表

  • id:用户序号,自动递增,主键

  • name:用户名字

  • nickname:用户昵称

  • phone:手机号码

  • email:邮箱

  • createtime:时间

      create table user(   id bigint not null primary key AUTO_INCREMENT,name VARCHAR(128) not null,nickname VARCHAR(128) not null,password VARCHAR(128) not null,phone VARCHAR(15) not null,createtime VARCHAR(128),email VARCHAR(100),constraint uq_nickname unique(nickname), constraint uq_name unique(name));
    

文件信息表 file_info

文件信息表

  • md5 文件md5-

  • file_id 文件id

  • url 文件url

  • size 文件大小, 以字节为单位

  • type 文件类型: png, zip, mp4……

  • count 文件引用计数, 默认为1, 每增加一个用户拥有此文件,此计数器+1

      create table file_info(md5 varchar(200) not null primary key,file_id varchar(256) not null,url varchar(512) not null,size bigint,type VARCHAR(20),count int);
    

用户文件列表user_file_list

  • 一个用户对应多个文件,而一个文件同样可以对应多个文件,所以select一个user适可以查到多条结果的,但是每条结果的文件MD5是不同的代表不同文件,也即返回一个结果集

  • 用户文件列表

    • user 文件所属用户

    • md5 文件md5

    • createtime 文件创建时间

    • filename 文件名字

    • shared_status 共享状态, 0为没有共享, 1为共享

    • pv 文件下载量,默认值为0,下载一次加1

        create table user_file_list(user varchar(128) not null,md5 varchar(200) not null,createtime VARCHAR(128),filename varchar(128),shared_status int, pv int);
      

用户文件数量表user_file_count

用户文件数量表

  • user 文件所属用户

  • count 拥有文件的数量(要区分开file_info中的count字段)

    create table user_file_count
    (
    user varchar(128) not null primary key,
    count int
    );

共享文件列表

  • 共享文件列表,代表用户在自己的文件列表选择共享的文件,这个列表里一个用户可能有多个共享了的文件

  • 共享文件列表

    • user 文件所属用户

    • md5 文件md5

    • createtime 文件共享时间

    • filename 文件名字

    • pv 文件下载量,默认值为1,下载一次加1

        create table share_file_list(user varchar(128) not null,md5 varchar(200) not null,createtime VARCHAR(128),filename varchar(128),pv int);
      

Redis数据表

Hash

Key为FILE_NAME_HASH,fileid作为field,value值是filename

Zset

Key为FILE_PUBLIC_ZSET,score为pv,value为

[云盘]协议包和数据库表设计相关推荐

  1. 美多商城项目:商品数据库表设计、准备商品数据、首页广告、商品列表页

    一.商品数据库表设计 1.1 SPU和SKU 在电商中对于商品,有两个重要的概念:SPU和SKU 1. SPU介绍 SPU = Standard Product Unit (标准产品单位) SPU是商 ...

  2. mysql设计积分兑换表_积分系统数据库表设计.docx

    积分系统数据库表设计 文件编号:JHDZ/SJ 密 级: 云上城积分功能数据库设计文档 项目名称:<云上城>项目代号:XXX版 本:V1.0编制单位:平台运营编制日期:2014-10-08 ...

  3. 万字归纳总结 | 数据库表设计与SQL编写技巧

    点击上方"朱小厮的博客",选择"设为星标" 后台回复"加群"加入公众号专属技术群 前言 随着移动云平台系统业务不断增长,必然需要对各系统进行 ...

  4. 一种多层级机构数据库表设计的思路及组织机构树数据库表设计

    在实际开发过程中,经常存在多个层级结构的设计,而且多个层级结构还需要排序.这里通过将多级结构的数据在同一张表中(无需多张表进行关联),并通过level的巧妙设计来实现单表查询. level的设计原则: ...

  5. 消息提醒系统:设计模式与实现方案 (公告(通告)、消息、提醒等基本功能数据库表设计与实现)

    参考地址: 公告(通告),消息,提醒等基本功能数据库表设计_DamonREN的博客-CSDN博客 多种消息提醒系统的设计模式.实现方案(附功能截图+表结构)_黑夜的风的博客-CSDN博客_消息提醒 设 ...

  6. MySQL数据库表设计

    MySQL数据库表设计 ​ 数据库设计(Database Design)是指对于一个给定的应用环境,构造最优的数据库模式,建立数据库及其应用系统,使之能够有效地存储数据,满足各种用户的应用需求(信息要 ...

  7. 数据库设计:用户登录系统数据库表设计

    用户登录系统数据库表设计 最近看了看公司后台用户登录系统的设计, 比较混乱, 主要还是因为URS和Oauth以及URS第三方这三个登录形式各不相同导致的. 下面着重介绍一下涉及到第三方登录中需要注意的 ...

  8. 美多商城之商品(商品数据库表设计)

    一.商品数据库表设计 1.1 SPU和SKU 在电商中对于商品,有两个重要的概念:SPU和SKU 1. SPU介绍      [即为商品的一个概述,一种商品的统称] SPU = Standard Pr ...

  9. Oracle数据库表设计时的注意事项

    Oracle数据库表设计时的注意事项  表是Oracle数据库中最基本的对象之一.万丈高楼从平地起,这个基础对象对于数据库来说,非常重要.因为其设计是否合理,直接跟数据库的性能相关.从Oracle数据 ...

最新文章

  1. 前端开发中的性能那点事
  2. React 表单与事件
  3. HDU1231(DP)
  4. pthread_attr_init线程属性
  5. uva 714 Copying Books
  6. java lucene cms_JEECMSv6标签使用之[@cms_lucene_list]
  7. NoSQL 数据库 简介
  8. IS-IS for IPv6技术原理
  9. Atitit 提升记忆的稳定性防止遗忘 目录 1. 存储稳定性(记忆牢固性),需要多处存储,提升稳定性 1 2. 方法分类原则 2 2.1. 常复习 2 2.2. 复习方法多样化 利用多种感官 2
  10. 医院药品管理系统java sql_医院药品管理系统设计(Netbeans,Myeclipse,MySQL,SQLServer)
  11. 5G垂直领域:华为智慧园区
  12. VS C#语言获取输入名称的汉语拼音简拼码和全拼码完整案例教程
  13. MySQL免安装版本的下载/配置/连接DBeaver---详细教程
  14. 转载好用的小工具 【who-lock-me】
  15. 蓝牙电话/耳机和蓝牙音乐profile
  16. SIM卡检测信号故障分析
  17. Excel | IF/IFS函数的使用 | 结合AND, OR, NOT多条件判断
  18. Android全面屏适配笔记
  19. Arcface v3 论文翻译与解读
  20. oracle在哪些系统运行,Oracle运行操作系统命令

热门文章

  1. 原来是wingate惹得祸!
  2. Excel字符函数(1):利用3个函数提取邮箱中的域名
  3. 钉钉免费内网穿透工具使用
  4. 致远A8协同管理软件怎么样?
  5. java 136年以后的时间_136年后 圣家族大教堂终于获得了建筑许可证
  6. Linux 文件彻底删除工具
  7. java -jar 工作原理_Java 中的 jar ,天天见,可是你知道它的运行机制吗?
  8. 高级技巧之vertical-align属性应用
  9. vertical-align属性的运用及注意事项
  10. Java操作Neo4J就是这么简单,#yyds盘点#