C++学习之云盘上传文件列表下载
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"
}
]
}

