1.上傳打開文件操作
1. 注冊
客戶端
成功
{"code":"002"}
該用戶已存在
{"code":"003"}
失敗
{"code":"004"}
服務器
2. 登錄
客戶端
服務器
// url
http: //127.0.0.1:80/reg
// post 數據格式
{
userName:xxxx,
nickName:xxx,
firstPwd:xxx,
phone:xxx,
email:xxx
}
10
// url
http: //127.0.0.1:80/login
// post 數據
{
user:xxxx,
pwd:xxx
}
§ 成功:
{
"code" : "000" ,
"token" : "xxx"
}
§ 失敗:
{
"code" : "001" ,
"token" : "faild"
}
10 3. 秒傳
客戶端
文件已存在 ( 秒傳成功 ) :
{"code":"005"}
秒傳成功:
{"code":"006"}
秒傳失敗:
{"code":"007"}
服務器
4. 上傳
客戶端
成功
{"code":"008"}
失敗
{"code":"009"}


2.上傳的http通信流程處理
獲取用戶文件個數
客戶端
§ token 驗證
? token 驗證成功: { "token" : "110" }
? token 驗證失敗: { "token" : "111" }
11
12
13
14
# url
http: //127.0.0.1:80/md5
# post 數據格式
{
user:xxxx,
token:xxxx,
md5:xxx,
fileName: xxx
}
9
# url
http: //127.0.0.1:80/upload
# post 數據格式
------WebKitFormBoundary88asdgewtgewx\r\n
Content-Disposition: form-data; user="mike"; filename="xxx.jpg"; md5="xxxx";
size=10240
Content-Type: text/plain
真正的文件內容
------WebKitFormBoundary88asdgewtgewx--
8 url
http://127.0.0.1:80/myfiles?cmd=count
post 數據
{ "user": "kevin", "token": "xxxx" }
服務器 :
6. 從服務器獲取文件信息
獲取用戶文件信息
http://127.0.0.1:80/myfiles&cmd=normal
按下載量升序
http://127.0.0.1:80/myfiles?cmd=pvasc
按下載量降序
http://127.0.0.1:80/myfiles?cmd=pvdesc
post 數據
{ "user": "yoyo" , "token": "xxxx", "start": 0, "count": 10 }
客戶端
成功
文件列表 json
失敗
{"code": "015"}
服務器
{
"num" : "270" ,
"code" : "110" // token 驗證
}
{
"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 ,
20
21 2. Qt 中的多線程
QT 中的線程類 - QThread
1. 第一種使用方法
1. 創建一個自定義的線程類 , 從 QThread 派生
2. 需要在自定義的類中重新實現 QThread 類的 run 函數
run 函數中的內容就是子線程的處理動作
子線程中不能操作 ui 對象 ( 控件對象 )
3. 創建一子線程對象
4. 使用子線程對象調用 start() 方法 , 子線程開始工作 (run 函數被執行 )
5. 子線程和主線程直接的數據通信是通過信號槽實現的
2. 第二種方式
1. 將要處理的操作封裝成一個類 , 這個類從 QObject 派生 , 要使用 qt 中的信號槽機制
"url" : "http://192.168.31.109:80/group1/M00/00/00/wKgfbViy2Z2AJ-FTAaM3As
g3Z0782.mp4" ,
"size" : 27473666 ,
"type" : "mp4"
}
]
}

