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.pswp.cn/news/898770.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/898770.shtml
英文地址,請注明出處:http://en.pswp.cn/news/898770.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

OpenCV圖像拼接(5)用于計算一組圖像的特征點和描述符的函數computeImageFeatures()

操作系統:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 編程語言:C11 算法描述 cv::detail::computeImageFeatures 是 OpenCV 中用于計算一組圖像的特征點和描述符的函數,通常在圖像拼接或類似的任務中使用。這個函…

詳細解析格式化消息框的代碼

書籍:《windows程序設計(第五版)》的開始 環境:visual studio 2022 內容:格式化消息框 說明:以下內容大部分來自騰訊元寶。 封裝MessageBoxPrintf 在MessageBoxPrintf()中處理可變參數,通過va_list機制&#xff0c…

【SpringSecurity】詳細核心類與過濾器流程講解和封裝通用組件實戰

Spring Security 全面介紹 1. 什么是 Spring Security? Spring Security 是一個功能強大且高度可定制的認證和訪問控制框架,是保護基于 Spring 的應用程序的標準工具。它是一個專注于為 Java 應用程序提供認證和授權的框架,實際上它是 Spri…

淺談Qt事件子系統——以可拖動的通用Widget為例子

淺談Qt事件子系統——以可拖動的通用Widget為例子 這一篇文章是一個通過實現可拖動的通用Widget為引子簡單介紹一下我們的事件對象子系統的事情 代碼和所有的文檔 1:Qt側的API介紹和說明 ? 這個是每一個小項目的慣例,我會介紹大部分Qt程序中使用到的…

[入門]NUC13配置Ubuntu20.04詳細步驟

文章目錄 1. 安裝Ubuntu20.041.1 制作系統啟動盤1.1.1 下載鏡像文件1.1.2 配置啟動盤 1.2 安裝內存條、硬盤1.3 安裝系統 2. 網卡驅動配置2.1 關閉安全啟動2.2 安裝intel官方網卡驅動backport2.2.1 第四步可能會出現問題 2.3 ubuntu官方的驅動2.4 重啟 3. 軟件安裝3.1 錄屏軟件…

(七)Reactor響應式編程框架

一、簡介 Reactor 是運行在 JVM 上的編程框架,最大特點是完全非阻塞,能高效控制 “背壓”,簡單來說就是處理數據傳輸時速度不匹配的問題 。它能和 Java 8 里的一些功能直接搭配使用,像處理異步結果的 CompletableFuture、處理數據…

從邊緣到核心:群聯云防護如何重新定義安全加速邊界?

一、安全能力的全方位碾壓 1. 協議層深度防護 四層防御: 動態過濾畸形TCP/UDP包(如SYN Flood),傳統CDN僅限速率控制。技術示例:基于AI的協議指紋分析,攔截異常連接模式。 七層防御: 精準識別業…

【Linux】Ubuntu 24.04 LTS 安裝 OpenJDK 8

目錄 通過 apt-get 直接安裝 JDK 1. 更新 apt 軟件源 2. 檢查 JDK 是否已安裝 3. 安裝OpenJDK 4. 檢查 JDK 是否成功安裝 5. 設置 JAVA_HOME 環境變量 找到需要設置的 Java 路徑 使用文本編輯器打開/etc/environment文件 添加 Java 安裝路徑 應用更改和驗證配置 通過…

Java 方法執行原理底層解析

java 文件經過javac編譯后,變成了存儲了一系列指令的.class文件。本文從指令層面分析Java 方法從解析、調用到執行的過程。 1 指令 一般格式:操作碼 [操作數1] [操作數2] ... 操作碼 1個字節的無符號整數(范圍:0x00 ~ 0xFF&…

【數學建模】最大最小值模型詳解

數學建模中的最大最小值模型詳解 文章目錄 數學建模中的最大最小值模型詳解引言最大最小值模型的基本概念最大化問題最小化問題 常見的求解方法1. 微積分法2. 線性規劃3. 非線性規劃4. 動態規劃 實際應用案例案例1:生產規劃問題案例2:投資組合優化 最大最…

C#的List和DIctionary實現原理(手搓泛型類以及增刪查改等功能)

這里寫自定義目錄標題 ListDIctionary List MyList類:這是一個泛型類,能夠存儲任意類型的元素。 _items數組:用于實際存儲元素。 _size變量:記錄當前列表中的元素數量。 構造函數:初始化數組容量為 4。 Count屬性&…

Linux系統管理與編程08:任務驅動綜合應用

蘭生幽谷,不為莫服而不芳; 君子行義,不為莫知而止休。 [環境] windows11、centos9.9.2207、zabbix6、MobaXterm、Internet環境 [要求] zabbix6.0安裝環境:Lamp(linux httpd mysql8.0 php) [步驟] 3 …

數據結構之基本隊列-順序結構實現-初始化-判斷隊列是否為空(front=rear)-出隊-入隊-隊尾滿了,調整隊列-獲取隊頭元素

數據結構之基本隊列-順序結構實現-初始化-判斷隊列是否為空(frontrear)-出隊-入隊-隊尾滿了&#xff0c;調整隊列-獲取隊頭元素——完整可運行代碼 #include <stdio.h>#define MAXSIZE 100 typedef int ElemType;typedef struct {ElemType data[MAXSIZE];int front;int…

基于LabVIEW的Windows平臺高速閉環控制

在Windows系統下&#xff0c;通過LabVIEW實現高速閉環控制面臨兩大核心挑戰&#xff1a;非實時操作系統的調度延遲與硬件接口的傳輸速度限制。以USB-6351&#xff08;NI USB-6351 DAQ卡&#xff09;為例&#xff0c;其理論采樣率可達1.25 MS/s&#xff08;單通道&#xff09;&a…

Java面試黃金寶典8

1. 什么是 Spring MVC 定義 Spring MVC 是 Spring 框架里用于構建 Web 應用程序的模塊&#xff0c;它嚴格遵循 MVC&#xff08;Model - View - Controller&#xff09;設計模式。這種設計模式把應用程序清晰地劃分成三個主要部分&#xff1a; Model&#xff08;模型&#xff0…

【 <二> 丹方改良:Spring 時代的 JavaWeb】之 Spring Boot 中的 RESTful API 設計:從上手到骨折

<前文回顧> 點擊此處查看 合集 https://blog.csdn.net/foyodesigner/category_12907601.html?fromshareblogcolumn&sharetypeblogcolumn&sharerId12907601&sharereferPC&sharesourceFoyoDesigner&sharefromfrom_link <今日更新> 一、開篇整活…

分享最近前端面試遇到的一些問題

前情提要&#xff08;分享個人情況&#xff0c;可以直接跳過&#xff09; 先說一下我的個人情況&#xff0c;我是2026屆的&#xff0c;目前是在找前端實習。 3月初&#xff0c;從3月3日開始在Boss上投簡歷。 分享我的個人故事&#xff0c;不想看可以直接滑到下面&#xff0c;…

rip 協議詳細介紹

以下是關于 RIP&#xff08;Routing Information Protocol&#xff0c;路由信息協議&#xff09; 的詳細介紹&#xff0c;涵蓋其工作原理、版本演進、配置方法、優缺點及實際應用場景。 1. RIP 協議概述 類型&#xff1a;動態路由協議&#xff0c;基于距離矢量算法&#xff08…

scrapy入門(深入)

Scrapy框架簡介 Scrapy是:由Python語言開發的一個快速、高層次的屏幕抓取和web抓取框架&#xff0c;用于抓取web站點并從頁面中提取結構化的數據&#xff0c;只需要實現少量的代碼&#xff0c;就能夠快速的抓取。 新建項目 (scrapy startproject xxx)&#xff1a;新建一個新的…

KiLog2MaximumIncrement的由來和KiMaximumIncrementReciprocal的由來

第一部分&#xff1a;KiLog2MaximumIncrement的由來 i 1; j KeMaximumIncrement; while ((1UI64<<i) < KeMaximumIncrement) { i; } KiLog2MaximumIncrement i; 2^17131072 2^18262144 i18KiLog2MaximumIncrement 中…