[クラウドディスク]プロトコルパッケージとデータベーステーブル設計
7529 ワード
プロトコルログインユーザ 登録ユーザ 私のファイル 私のファイル展示ページ サーバはフロントエンド に戻る.秒伝 アップロードファイル 共有リスト ファイル関連アクション 共有ファイル 削除ファイル pvフィールド処理 データベーステーブル設計 MySQLデータベース ユーザ情報テーブルuser ファイル情報テーブルfile_info ユーザーファイルリストuser_file_list ユーザーファイル数テーブルuser_file_count 共有ファイルリスト Redisデータテーブル Hash Zset
ログインユーザ
ユーザーの登録
マイファイル
「マイ・ファイル」インタフェースには、すべての署名ユーザーのファイル・リストが表示されます.(右クリック)ポイントのアイコン:ダウンロード、共有、削除、プロパティ アイコンが選択されていません.右クリックの画面が空白です.ダウンロード量でソート/ダウンロード量でソート/リフレッシュ/アップロード です.
マイファイルの表示ページ
//ユーザーファイル情報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パッケージは以下の通りです.
サーバがフロントエンドに戻る
秒伝
ファイルのアップロード
共有リスト
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パッケージは以下の通りです.//ダウンロードファイル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
ファイル関連アクション
ファイルの共有
ファイルの削除
pvフィールド処理
データベーステーブル設計
MySQLデータベース
データベース名「dfs」の作成
ユーザ情報テーブルuser
ユーザ情報テーブル id:ユーザシーケンス番号、自動インクリメント、プライマリ・キー name:ユーザー名 nickname:ユーザーニックネーム phone:携帯電話番号 email:メールボックス createtime:時間 ファイル情報テーブルfile_info
ファイル情報テーブル md 5ファイルmd 5- file_idファイルid urlファイルurl sizeファイルサイズ、バイト単位 typeファイルタイプ:png,zip,mp 4...... countファイル参照カウント、デフォルトは1で、ユーザーが1人増えるごとにこのファイルを所有するカウンタ+1 ユーザファイルリストuser_file_list 1のユーザは複数のファイルに対応し、1つのファイルは同様に複数のファイルに対応することができるので、selectの1つのuserは複数の結果を調べることができるが、各結果のファイルMD 5は異なる代表的な異なるファイルであり、すなわち1つの結果セット を返す.ユーザーファイルリスト userファイル所属ユーザ md 5ファイルmd 5 createtimeファイル作成時間 filenameファイル名 shared_status共有状態、0は共有なし、1は共有 pvファイルのダウンロード量、デフォルト値は0で、ダウンロードは一度に1 を加えます.
ユーザファイル数テーブルuser_file_count
ユーザファイル数テーブル userファイル所属ユーザ count所有ファイルの数(file_infoのcountフィールドを区別する)create table user_file_count ( user varchar(128) not null primary key, count int );
共有ファイルリスト共有ファイルリストは、ユーザが自分のファイルリストで共有ファイルを選択することを表す.このリストには、1人のユーザが複数共有したファイル を有する可能性がある.共有ファイルリスト userファイル所属ユーザ md 5ファイルmd 5 createtimeファイル共有時間 filenameファイル名 pvファイルのダウンロード量、デフォルト値は1で、ダウンロードは一度に1 を追加します.
Redisデータテーブル
Hash
KeyはFILE_NAME_HASH,fileidはfield,value値はfilename
Zset
KeyはFILE_PUBLIC_ZSET、scoreはpv、valueは
ログインユーザ
//====================
127.0.0.1:80/login
post (json)
{
user:xxxx,
pwd:xxx
}
ユーザーの登録
//====================
127.0.0.1:80/reg
post (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/md5
post (json)
{
user:xxxx,
md5:xxx,
fileName: xxx
}
ファイルのアップロード
127.0.0.1:80/upload
post :
------WebKitFormBoundary88asdgewtgewx\r
Content-Disposition: form-data; user="mike"; filename="xxx.jpg"; md5="xxxx"; size=10240\r
Content-Type: application/octet-stream\r
\r
\r
------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
}
ファイル関連アクション
ファイルの共有
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
ユーザ情報テーブル
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)
);
ファイル情報テーブル
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
);
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
ユーザファイル数テーブル
共有ファイルリスト
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は