当前位置: 首页 > news >正文

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

3.上传的数据块头的处理

4.资源文件中的文件只能在程序中进行读操作

5.客户端上传数据组织和细节

6.上传进度条处理

7.通过指针求post请求数据块中的关键字思路

8.上传服务器端处理流程

9.代码调试

10.上传任务队列分析

11多线程上传的处理流程

12.多线程下载思路


http://www.mrgr.cn/news/95641.html

相关文章:

  • python 学习基本语法整理
  • 介绍一款基于MinerU的PDF翻译工具
  • Qt开发:QComboBox的使用
  • AI知识补全(一):tokens是什么?
  • go中的文件、目录的操作
  • 多阶段构建实现 Docker 加速与体积减小:含文件查看、上传及拷贝功能的 FastAPI 应用镜像构建
  • 【STM32】SPI通信外设硬件SPI读写W25Q64
  • Nginx请求头Hos头攻击
  • Ubuntu20.04安装并配置Pycharm2020.2.5
  • C++模板编程与元编程面试题及参考答案(精选100道题)
  • 车道保持中车道线识别
  • 圆弧插补相关算法汇总(C++和ST源代码)
  • 银河麒麟桌面版包管理器(四)
  • 银河麒麟桌面版包管理器(五)
  • 如何解决微服务调用链性能问题(优化 JVM 配置,降低 Full GC 频率)
  • 虚幻基础:UI
  • 论文阅读笔记:Denoising Diffusion Probabilistic Models (3)
  • 二叉树的学习
  • PowerShell 终端环境自动化配置
  • Ubuntu修改Swap交换空间大小