[クラウドディスク]プロトコルパッケージとデータベーステーブル設計


プロトコル
  • ログインユーザ
  • 登録ユーザ
  • 私のファイル
  • 私のファイル展示ページ
  • サーバはフロントエンド
  • に戻る.
  • 秒伝
  • アップロードファイル
  • 共有リスト
  • ファイル関連アクション
  • 共有ファイル
  • 削除ファイル
  • pvフィールド処理
  • データベーステーブル設計
  • MySQLデータベース
  • ユーザ情報テーブルuser
  • ファイル情報テーブルfile_info
  • ユーザーファイルリストuser_file_list
  • ユーザーファイル数テーブルuser_file_count
  • 共有ファイルリスト
  • Redisデータテーブル
  • Hash
  • Zset

  • ログインユーザ
    //====================    
    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
    }
    
  • //ダウンロードファイル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
    ファイル情報テーブル
  • md 5ファイルmd 5-
  • file_idファイルid
  • urlファイルurl
  • sizeファイルサイズ、バイト単位
  • typeファイルタイプ:png,zip,mp 4......
  • countファイル参照カウント、デフォルトは1で、ユーザーが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
  • 1のユーザは複数のファイルに対応し、1つのファイルは同様に複数のファイルに対応することができるので、selectの1つのuserは複数の結果を調べることができるが、各結果のファイルMD 5は異なる代表的な異なるファイルであり、すなわち1つの結果セット
  • を返す.
  • ユーザーファイルリスト
  • userファイル所属ユーザ
  • md 5ファイルmd 5
  • 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 );

  • 共有ファイルリスト
  • 共有ファイルリストは、ユーザが自分のファイルリストで共有ファイルを選択することを表す.このリストには、1人のユーザが複数共有したファイル
  • を有する可能性がある.
  • 共有ファイルリスト
  • userファイル所属ユーザ
  • md 5ファイルmd 5
  • 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は