精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

Http服務器實現文件上傳與下載(五)

網絡 網絡管理
歡迎大家和我一起編寫Http服務器實現文件的上傳和下載,現在我回顧一下在上一章節中提到的一些內容,之前我已經提到過文件的下載,在文件的下載中也提到了文件的續下載只需要在響應頭中填寫Content-Range這一字段,并且服務器的文件指針指向讀取的指定位置開始讀取傳輸。

一、引言

歡迎大家和我一起編寫Http服務器實現文件的上傳和下載,現在我回顧一下在上一章節中提到的一些內容,之前我已經提到過文件的下載,在文件的下載中也提到了文件的續下載只需要在響應頭中填寫Content-Range這一字段,并且服務器的文件指針指向讀取的指定位置開始讀取傳輸。在這一章節中我講講解文件的上傳這一功能,講完這一章節,大致的功能也全部完成,接著就是上面文件控制模塊和一些資源模塊。

在文件的上傳中主要以HttpRequest類為主,在考慮文件的上傳時我一點迷惑,到底把文件的上傳功能是放到HttpResponse下還是在HttpRequest下,畢竟HttpResponse中有一些相應的文件下載功能,在添加一個文件上傳功能也不為過。但是我最終還是選擇在HttpRequest中,原因是我主要是HttpResponse作為是服務器到瀏覽器發送內容,而HttpRequest作為瀏覽器到服務器發送內容。這樣下載和上傳的功能就分別坐落在了HttpResponse和HttpRequest上了。

在完成功能上的歸屬問題后,接著直接上代碼,在文件的上傳中,涉及到C++流。在這里其實用到不是很多的內容,但是這卻是C++一個重要的一大塊內容。有時間和大家在一起復習這一塊內容。好了,接著上代碼咯,上一章的內容有設計一些HttpRequest的代碼,沒有全部的包括進去。

二、HttpRequest

頭文件(include/httprequest.h)

1 #ifndef HTTPREQUEST_H
2 #define HTTPREQUEST_H
3 #include "socket.h"
4 #include 
5 #include 
6 #include 
7 namespace Http{
8 class HttpRequest{
9 public:
10 HttpRequest(TCP::Socket &c);
11 virtual ~HttpRequest();
12 std::string getMethod() const;
13 std::string getUrl() const;
14 std::string getHost() const;
15 std::map
16 ssize_t upload(int confd,std::string filename);
17 protected:
18 private:
19 std::string method;
20 std::string url;
21 std::string host;
22 TCP::Socket &s;
23 };
24 }
25 #endif // HTTPREQUEST_H

 

源文件(src/httprequest.cpp)

 

1 #include "httprequest.h"
2 #include "utils.h"
3 namespace Http{
4 HttpRequest::HttpRequest(TCP::Socket &c):s(c){
5 }
6
7 HttpRequest::~HttpRequest(){
8 }
9 std::map
10 char recvBuf[1024];
11 memset(recvBuf,0,sizeof(recvBuf));
12 s.server_read(confd,recvBuf,1024);
13 std::cout<
14 std::map
15 method =mp["Method"];
16 url=mp["Url"];
17 host=mp["Host"];
18 return mp;
19 }
20 ssize_t HttpRequest::upload(int confd,std::string filename){
21 char buf[1024];
22 size_t n=0;
23 ssize_t nread=0;
24 std::string boundary;
25 std::string file;
26 std::ofstream outStream;
27 int readlineCount=1;
28 while(1){
29 memset(buf,0,sizeof(buf));
30 n=s.server_readline(confd,buf,sizeof(buf));
31 if(readlineCount==1){
32 boundary=std::string(buf,buf+strlen(buf)-2);
33 boundary+="--\r\n";
34 std::cout<
#p#
35 }else if(readlineCount==2){
36 int i=n;
37 while(buf[i]!='='){
38 if((buf[i]>='0'&&buf[i]<='9')
39 ||(buf[i]>='a'&&buf[i]<='z')
40 ||(buf[i]>='A'&&buf[i]<='Z')
41 ||(buf[i]=='.'))
42 i--;
43 else{
44 buf[i]='*';
45 i--;
46 }
47 }
48 file=std::string(buf+i+2,buf+n-3);
49 }else if(readlineCount==3){
50 std::string rw;
51 rw=std::string(buf,buf+strlen(buf));
52 int pos=rw.find('/');
53 rw=rw.substr(0,pos);
54 filename=filename+file;
55 if(rw=="Content-Type: text")
56 outStream.open(filename.c_str());
57 else{
58 outStream.open(filename.c_str(),std::ios::binary);
59 std::cout<<"ios::binary"<
60 }
61 }else if(readlineCount==4){
62 memset(buf,0,sizeof(buf));
63 while(1){
64 n=s.server_readn(confd,buf,sizeof(buf));
65 if(n==boundary.size()&&strcmp(buf,boundary.c_str())==0){
66 goto exit;
67 }
68 nread+=n;
69 if(buf[n-1]==0){
70 outStream.write(buf,n-1);
71 }else{
72 outStream.write(buf,n);
73 }
74 }
75 }
76 readlineCount++;
77 }
78 exit:
79 outStream.close();
80 s.server_close(confd);
81 return nread;
82 }
83 std::string HttpRequest::getMethod() const{
84 return method;
85 }
86 std::string HttpRequest::getUrl() const{
87 return url;
88 }
89 std::string HttpRequest::getHost() const{
90 return host;
91 }
92 }

 

好了上傳文件的代碼也已經出來了,現在就是對其稍微的解釋一下把。在解釋代碼之前先看一下我們在點擊上傳文件按鈕的時候,瀏覽器給服務器發送的內容是什么,比如我有一個test.txt的文本文件(這里采用文件文件是為了好查看內容,其實二進制文件也是一致的)。test.txt文件的內容只有一行就是aaabbb這6個字母。接著打開可以火狐的開發者網絡這一功能。并且點擊發送文件后,可以在消息頭上看到如下信息。

 

 

這些內容在之前的章節已經講過了,這里就不重復了,并且點擊參數這一選項可以看到如下信息。

 

在這里第1,2行是請求頭的內容,接著一行空行之后是請求體4-9行。看到請求體的內容不是直接是test.txt的內容。顯示‘--23469111452’為開頭,拜師這個是文本的分隔符。前面固定一段'-',加上一個瀏覽器自動產生的數據。并且一個文件的解釋也是這樣,只是數字后面多了2個'-'。在第5,6行是對上傳的文件的描述。接著是一行空行。第8行開始就是文件的內容了。知道這個請求體后,很容易的就可以寫出代碼。上面的的upload中readlineCount變量就是起到定位功能。看服務器已經接收到那一行了,這里s.server_readn這個行數之間沒有提交,現在的代碼段一直在修改,所以有些與博客有點差別,大體上還是一致的。

責任編輯:何妍 來源: 博客園
相關推薦

2015-10-08 09:38:24

HTTP網絡協議文件傳輸

2015-09-29 09:25:20

HTTP網絡協議

2015-09-28 13:39:13

Http網絡協議HTTP

2015-10-09 09:41:24

HTTP網絡協議文件傳輸

2020-12-02 11:48:05

TFTP

2019-04-23 10:48:55

HTTPTomcat服務器

2018-10-09 09:28:12

HTTPHTTP協作服務器

2011-08-18 16:03:34

iPhone上傳圖片

2022-03-01 20:33:50

服務web項目

2020-06-17 21:39:11

HTTP協議服務器

2010-05-25 13:20:46

http與svn

2017-11-10 08:58:49

Web服務器應用程序

2009-07-03 13:05:47

JSP HTTP服務器

2018-06-15 10:25:43

Python HTTPFTP服務器

2018-12-06 09:23:33

2019-04-24 15:06:37

Http服務器協議

2010-03-22 12:57:46

Java Socket

2009-07-06 17:25:22

JSP HTTP服務器

2009-07-06 17:56:12

JSP HTTP服務器

2019-08-22 15:26:24

HTTP服務器Python
點贊
收藏

51CTO技術棧公眾號

神马久久久久久| 亚洲色图欧美激情| 欧美亚洲国产日本| 天天干天天操天天拍| 亚洲午夜剧场| 午夜成人免费电影| 亚洲丰满在线| 刘亦菲毛片一区二区三区| 久久久久久穴| 欧美精品亚州精品| 久久成人激情视频| 精品久久免费| 91久久人澡人人添人人爽欧美| 伊人婷婷久久| 欧美69xxxxx| 国产精品中文字幕日韩精品 | 91久久国产综合久久蜜月精品| 欧美成人aaaaⅴ片在线看| 精品一区二区三区在线| 欧美成人video| 999在线免费视频| bl视频在线免费观看| 国产精品伦理一区二区| 久久精品欧美| 超碰在线观看99| 精品成人久久久| 国产精品自拍小视频| 一区二区三区中文在线观看| 黄色美女网站在线观看| 网曝91综合精品门事件在线| 欧美视频在线一区| 无码中文字幕色专区| 蜜桃视频网站在线观看| 久久久91精品国产一区二区精品 | 久久久久久国产精品一区 | 午夜综合激情| 精品少妇一区二区30p| 一区二区三区在线观看免费视频| 第一区第二区在线| 欧美一级片在线| 777视频在线| 欧美www.| 日本道在线观看一区二区| av7777777| 91福利在线免费| 亚洲免费观看高清在线观看| 色姑娘综合av| 国产成人天天5g影院在线观看| av亚洲精华国产精华| 亚洲xxxx视频| 国产普通话bbwbbwbbw| 免费的成人av| 国产精品入口尤物| 中文有码在线播放| 视频在线在亚洲| 国产99久久精品一区二区 夜夜躁日日躁 | 欧洲精品一区| 精品性高朝久久久久久久| 加勒比精品视频| 天堂成人娱乐在线视频免费播放网站 | 久久伦理在线| 久久久久www| 在线观看亚洲网站| 中文字幕日韩欧美精品高清在线| 日韩一区二区久久久| 中文字幕欧美激情极品| 日韩黄色大片| 久久精品国产亚洲一区二区 | 亚洲91中文字幕无线码三区| 色琪琪综合男人的天堂aⅴ视频| jizz18女人高潮| 久久一区二区三区电影| 色七七影院综合| 男人与禽猛交狂配| 亚洲天堂黄色| 日本乱人伦a精品| 日本视频www色| 激情六月婷婷综合| 电影午夜精品一区二区三区| 人妻少妇一区二区三区| 久久亚洲精华国产精华液| 欧洲精品在线一区| 日本中文字幕在线播放| 电影一区二区| 久久久国产精品午夜一区ai换脸| 日韩av电影免费在线观看| av资源网在线观看| 国产精品国产三级国产三级人妇| 精品国产无码在线| 超级白嫩亚洲国产第一| 91久久国产最好的精华液| 一区二区三区四区毛片| 久久97精品| 在线观看成人黄色| 少妇久久久久久被弄高潮| 韩国亚洲精品| 国产精品三级在线| 黑人乱码一区二区三区av| 久久久久久电影| 99亚洲国产精品| 中文字幕成在线观看| 欧美日韩成人综合天天影院| 色哟哟无码精品一区二区三区| 国产一区二区精品福利地址| 久久夜精品香蕉| 亚洲精品男人天堂| 狠狠狠色丁香婷婷综合激情 | 久草综合在线观看| 日韩激情欧美| 一区二区日韩精品| 国产一级做a爱免费视频| 日韩精品国产欧美| 99高清视频有精品视频| 欧美套图亚洲一区| 夜色激情一区二区| mm131国产精品| 欧美黄色影院| 精品中文字幕视频| 最新国产中文字幕| 91视视频在线观看入口直接观看www| 亚洲欧洲一区二区| 自由日本语热亚洲人| 日韩欧美一区二区不卡| 欧美18—19性高清hd4k| 国产又粗又猛视频免费| 蜜桃视频免费观看一区| 韩国成人一区| 精精国产xxxx视频在线中文版 | 亚洲免费看黄网站| 北条麻妃视频在线| 久久亚洲道色| 欧美日韩成人精品| 91国偷自产中文字幕久久| 久久久久久亚洲综合影院红桃| 成人一级生活片| 亚洲色图图片| 中文字幕欧美日韩va免费视频| 九九热在线免费观看| 国产在线播放一区三区四| 日韩在线观看一区 | 在线日韩第一页| 日韩欧美一二区| 91国产免费观看| 色狠狠色狠狠综合| 黄色一区二区在线观看| 亚洲精品美女久久7777777| 色偷偷偷在线视频播放| 日韩三级视频在线看| 婷婷国产成人精品视频| 热久久久久久久| 日韩福利视频| 欧美日韩123区| 亚洲欧美激情视频| 天天干天天色综合| 久久免费精品国产久精品久久久久 | 免费观看精品视频| 精品福利一区| 91精品国产高清久久久久久| 日本美女一级片| 五月婷婷另类国产| 北岛玲一区二区| 麻豆亚洲精品| 青娱乐一区二区| 成人涩涩视频| xxxxx成人.com| 亚洲在线精品视频| 日韩大片欧美大片| 91视频国产资源| 玩弄japan白嫩少妇hd| 免费久久久久久久久| 国产精品jvid在线观看蜜臀| 国产福利电影在线| 欧美三级乱人伦电影| 久久av红桃一区二区禁漫| 精品一区二区免费在线观看| 日韩一级特黄毛片| 国内精品国产成人国产三级粉色 | 亚洲最大的黄色网址| 国产一区二区精品久久99| 国产肉体ⅹxxx137大胆| 思热99re视热频这里只精品| 国产成人精品视频在线| 日p在线观看| 精品不卡在线视频| 中文字幕一区二区人妻视频| 国产精品剧情在线亚洲| 无码国产精品一区二区高潮| 在线午夜精品| 亚洲免费在线精品一区| 亚洲精品在线播放| 欧美亚洲国产精品| 黄色网页网址在线免费| 亚洲第一在线视频| 久久久久精彩视频| 亚洲精品乱码久久久久久久久| 日批在线观看视频| 蜜桃久久av一区| 欧美视频在线第一页| 少妇精品久久久| 99久久综合狠狠综合久久止| 一区一区三区| 欧美富婆性猛交| 国产精品免费观看| 精品伦理精品一区| 日韩不卡高清视频| 洋洋av久久久久久久一区| 91国模少妇一区二区三区| 国内精品久久久久影院薰衣草| 精品视频在线观看一区| 91综合视频| 久久偷看各类wc女厕嘘嘘偷窃| 国产亚洲精彩久久| 午夜精品久久久久久久男人的天堂 | 加勒比中文字幕精品| 国产精品第10页| 国产丝袜在线观看视频| 日韩中文有码在线视频| 嫩草在线播放| 亚洲国产古装精品网站| 国产男女猛烈无遮挡| 色婷婷av一区| 日韩精品视频播放| 日韩美女视频一区二区 | 最新日韩av在线| www.久久国产| 不卡的av中国片| 污视频在线观看免费网站| 日本成人中文字幕在线视频| 男人日女人下面视频| 欧美日韩国产精品一区二区亚洲| 天堂精品一区二区三区| 亚洲欧洲美洲国产香蕉| 好吊色欧美一区二区三区 | 欧美少妇一区| 欧美日韩看看2015永久免费| 97人人干人人| 日本在线一区二区| 国产精品久久久久久超碰| www.精品| 5252色成人免费视频| 超碰97免费在线| 欧美激情欧美激情在线五月| 国产二区三区在线| 久久久精品影院| 黄色片网站在线观看| 日韩一区二区av| 日本中文字幕在线视频| 日韩中文在线视频| 69久久夜色| 色黄久久久久久| 麻豆影视国产在线观看| 综合欧美国产视频二区| 成人高清免费在线播放| 一区二区成人av| av在线第一页| 色天天综合狠狠色| 免费黄色在线看| 两个人的视频www国产精品| h网站久久久| 精品少妇一区二区30p| 污污网站在线看| 欧美国产极速在线| 黄页在线观看免费| 性色av一区二区三区红粉影视| 2020av在线| 欧美一级高清免费播放| 黄瓜视频成人app免费| 国产精品日韩电影| 二区视频在线观看| 国产精品人人爽人人做我的可爱| 浮妇高潮喷白浆视频| 日韩国产在线一| 国内国产精品天干天干| 国产91丝袜在线播放九色| 白嫩情侣偷拍呻吟刺激| 久久中文娱乐网| 免费黄色在线网址| 亚洲精品日产精品乱码不卡| 国产一级片网址| 欧美午夜久久久| 日韩在线视频不卡| 欧美日韩aaaaa| 亚洲奶汁xxxx哺乳期| 日韩精品视频免费专区在线播放| 国产日本在线| 久久综合久久88| 色综合亚洲图丝熟| 国产日韩欧美在线| japanese色系久久精品| 欧美精品二区三区四区免费看视频| 精品久久中文| 成人av在线播放观看| 麻豆亚洲精品| 成人在线短视频| 久久精品视频网| 动漫性做爰视频| 一本久久综合亚洲鲁鲁五月天 | 亚洲天堂黄色片| 疯狂做受xxxx高潮欧美日本| 在线观看黄色国产| 亚洲精品一区二区在线观看| 国产福利电影在线| 久久久久久久久久久久av| 亚洲成人看片| 国产精品久久久久久久久久直播| 国产探花在线精品| 热久久最新地址| 青青青伊人色综合久久| 香港三日本8a三级少妇三级99| 国产精品家庭影院| 日日噜噜噜噜人人爽亚洲精品| 777亚洲妇女| 经典三级在线| 久久久综合免费视频| 日韩一区二区三区四区五区| 精品综合在线| 欧美福利一区| 男生操女生视频在线观看| 337p粉嫩大胆噜噜噜噜噜91av| 成熟的女同志hd| 色一情一乱一乱一91av| 丰满人妻一区二区| 久久精品国产视频| 91在线成人| 久久久精彩视频| 激情另类综合| 久久久久久无码精品人妻一区二区| 国产欧美一区二区精品秋霞影院| 日本熟伦人妇xxxx| 日韩免费观看高清完整版 | 精品久久国产| 欧美精品一区免费| 高清在线不卡av| 国产成人久久久久| 91精品国产综合久久久久久漫画| av资源网站在线观看| 国产精品69久久| 亚洲婷婷伊人| 熟女性饥渴一区二区三区| 成人污视频在线观看| 免费毛片在线播放免费| 制服丝袜亚洲色图| 久热国产在线| 亚洲va欧美va在线观看| 91亚洲一区| 99精品999| 亚洲品质自拍视频| 中文字幕av影视| 一区二区成人精品| 国产精品.xx视频.xxtv| 亚洲欧美日韩综合一区| 久久精品理论片| 国产精品69久久久久孕妇欧美| 欧美日韩久久一区| 蜜桃视频在线观看免费视频网站www| 国产欧美亚洲精品| 91精品秘密在线观看| 国产探花在线观看视频| 亚洲精品一二三区| 北条麻妃一二三区| 久久久久久国产精品三级玉女聊斋 | 精品国产日本| 欧美亚洲一区二区三区| 精品欧美一区二区久久久| 91福利在线看| 91电影在线播放| 91在线网站视频| 欧美区日韩区| 最近日本中文字幕| 日本精品视频一区二区三区| sese在线视频| 91免费的视频在线播放| 欧美日韩国产色综合一二三四| 玖玖爱在线精品视频| 色婷婷综合久色| av在线电影免费观看| 91观看网站| 国产偷自视频区视频一区二区| 亚洲av熟女国产一区二区性色| 欧美精品一级二级| 欧美日韩色网| 日本黑人久久| 久久99精品久久久| 久久高清免费视频| 亚洲欧美综合区自拍另类| 欧美aaaaaa| 国产原创中文在线观看| 亚洲国产精品成人综合| 99国产精品99| 日本国产精品视频| 五月天久久777| 亚洲一区二区三区无码久久| 欧美日韩激情一区二区| caoprom在线| 在线视频一区观看| 91视频在线看| 影音先锋人妻啪啪av资源网站| 久久精品青草| 亚洲国产果冻传媒av在线观看| 欧美日本国产一区|