当前位置: 首页 > 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.多线程下载思路

相关文章:

  • C#基础学习(三)值类型和引用类型:编程世界的“现金“ vs “银行卡“,以及string这个“渣男“的叛变行为
  • 2059-Authentication plugin ‘caching_sha2_password‘ cannot be loaded
  • 【C++初阶】从零开始模拟实现vector(含迭代器失效详细讲解)
  • 大数据运维实战之YARN任务内存泄露排查实战:从节点掉线到精准定位的完整指南
  • 生成模型速通(Diffusion,VAE,GAN)
  • 理解使用Kubernetes对象
  • Java IO 流:从字节到字符再到Java 装饰者模式(Decorator Pattern),解析与应用掌握数据流动的艺术
  • macos设置docker可以ping通容器
  • Spring Boot(十五):集成Knife4j
  • 算法竞赛备赛——【数据结构】栈单调栈
  • 07_GRU模型
  • ChatGPT vs DeepSeek vs Copilot vs Claude:谁将问鼎AI王座?
  • HTML 表单处理进阶:验证与提交机制的学习心得与进度(一)
  • 优选算法的睿智之林:前缀和专题(一)
  • Codeforces Round 1012 (Div. 2)(ABCD)
  • 【Vue3入门2】02-记事本案例
  • redis命令
  • 并查集(竞赛)
  • 生活电子类常识——搭建openMauns工作流+搭建易犯错解析
  • STM32单片机uCOS-Ⅲ系统10 内存管理
  • 世界黄金协会:一季度全球黄金投资需求同比增170%
  • 辽宁辽阳火灾3名伤者无生命危险
  • 移动互联网未成年人模式正式发布
  • 巴防长称中俄可参与克什米尔恐袭事件国际调查,外交部回应
  • 朝鲜派兵库尔斯克是否有助于解决乌克兰危机?外交部回应
  • 央行回应美债波动:单一市场、单一资产变动对我国外储影响总体有限