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"
}
]
}

