精品欧美一区二区三区在线观看 _久久久久国色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技術棧公眾號

亚洲天堂免费看| 日韩电影一区二区三区| 亚洲国内精品在线| 国产极品美女高潮无套久久久| www.视频在线.com| 久久99精品视频| 海角国产乱辈乱精品视频| 少妇精品一区二区三区| 超碰国产精品一区二页| 亚洲成人午夜影院| 亚洲激情一区二区| 午夜国产在线观看| 国产一区在线精品| 日本中文字幕不卡免费| 欧美精品乱码视频一二专区| 国产欧美日韩视频在线| 精品久久久久久无| 性生活免费在线观看| 色a资源在线| 亚洲国产精品av| 国产欧美一区二区在线播放| 国产又粗又大又黄| 老妇喷水一区二区三区| 亚洲国产欧美日韩在线观看第一区| 久久99国产精品久久99| 欧美性受xxxx白人性爽| 五月天婷婷色综合| 国产欧美亚洲精品a| 精品国产髙清在线看国产毛片| 日韩一级理论片| 天堂中文av在线资源库| 亚洲激情图片小说视频| 亚洲三区视频| 韩国中文免费在线视频| 成人av网站在线观看免费| 91久久国产精品| 午夜一区二区三区四区| 先锋a资源在线看亚洲| 欧美极品美女视频网站在线观看免费 | 婷婷五月综合缴情在线视频| av电影在线网| 国产午夜精品一区二区三区嫩草| 91视频九色网站| 中文字幕一区二区三区四区免费看| 亚洲一区成人| 97色在线观看| 国产午夜激情视频| 黑丝一区二区| 欧美精品18videos性欧| 亚洲国产成人精品综合99| 亚洲国产精品91| 久久躁日日躁aaaaxxxx| 日韩精品123区| 91精品国产自产在线观看永久∴ | 制服丝袜成人动漫| 制服丝袜中文字幕第一页 | 日韩欧美电影一区| 色综合久久久无码中文字幕波多| 国产精品视频首页| 91精品国产福利在线观看| 国产免费中文字幕| 日韩中文字幕| 精品国产乱码久久久久久牛牛 | 欧美性猛交xxxx乱大交hd| 日韩欧美久久久| 国产精品高颜值在线观看| 国产欧美日产一区| 日韩一区二区三区高清| 9191在线观看| 国产精品久久精品日日| 黄频视频在线观看| 伊人春色在线观看| 亚洲地区一二三色| www.亚洲天堂网| 91成人抖音| 制服丝袜一区二区三区| 成人在线电影网站| 亚洲品质自拍| 久久精品91久久久久久再现| 欧美三级在线免费观看| 一本久久综合| 国产精品视频在线播放| 国内老熟妇对白xxxxhd| gogo大胆日本视频一区| 日韩精品电影网站| 四季久久免费一区二区三区四区| 亚洲777理论| 久久99爱视频| 成人激情自拍| 怡红院精品视频| 日本天堂中文字幕| 老牛影视一区二区三区| 91探花福利精品国产自产在线| 丁香花免费高清完整在线播放| 久久综合色播五月| 男女啪啪的视频| 涩涩视频在线| 91麻豆精品久久久久蜜臀| www.日本高清| 久久久精品久久久久久96| 97热精品视频官网| 99精品免费观看| 337p粉嫩大胆色噜噜噜噜亚洲| 亚洲一区二区三区四区中文| 77thz桃花论族在线观看| 欧美三级韩国三级日本三斤| 久久人妻少妇嫩草av无码专区| 久久密一区二区三区| 91精品国产精品| 国产免费叼嘿网站免费| 久久精品亚洲麻豆av一区二区| 波多野结衣与黑人| 日韩一区二区三区免费| 亚洲国产欧美久久| 四虎精品免费视频| 日本麻豆一区二区三区视频| 国产伦精品一区二区三| 麻豆电影在线播放| 91久久精品午夜一区二区| japanese在线观看| 午夜精品久久| 91美女福利视频高清| 国产一二三在线观看| 婷婷一区二区三区| 国产伦精品一区二区三区妓女下载 | 成人国产在线观看| 在线观看国产一区| 亚洲爱爱视频| 亚洲人成网7777777国产| 国产女人被狂躁到高潮小说| 久久国产三级精品| 色阁综合av| 制服诱惑亚洲| 亚洲日韩第一页| 99久久久久久久久| 91免费看片在线观看| 秋霞无码一区二区| 97久久综合精品久久久综合| 欧美大奶子在线| 国产熟女精品视频| 亚洲精品五月天| 亚洲五月激情网| 五月天激情综合网| 成人一区二区电影| gogo在线高清视频| 欧美大片顶级少妇| 国产在线拍揄自揄拍| 国产91在线观看丝袜| 人妻av无码专区| 国产精品自在线拍| 欧美黑人又粗大| 六月婷婷综合网| 亚洲资源在线观看| 国产 中文 字幕 日韩 在线| 国产精品日韩久久久| 欧美精品欧美精品| 久久亚洲精品爱爱| 久久韩国免费视频| 精品人妻一区二区三区三区四区| 一区二区三区精品在线| 国产免费a级片| 日韩午夜在线电影| 日本不卡一区| 日韩有码欧美| 欧美国产日韩免费| 污污的视频网站在线观看| 疯狂欧美牲乱大交777| av男人的天堂av| 久久av老司机精品网站导航| 三级在线免费观看| 男人的天堂久久| 国产精品国产三级国产专播精品人 | 高清在线一区| 久久影视电视剧免费网站清宫辞电视| 99久久免费国产精精品| 亚洲无人区一区| 自拍偷拍亚洲天堂| 久久 天天综合| 成年人网站国产| 国产中文精品久高清在线不| 亚洲free嫩bbb| 国产v日韩v欧美v| 最好看的2019年中文视频| 国内毛片毛片毛片毛片| 色综合一区二区| 欧美偷拍第一页| 91免费版在线看| 天天干天天草天天| 狠狠噜噜久久| 亚洲人成人77777线观看| 亚洲日本视频在线| 国产精品成人国产乱一区| av软件在线观看| 国产视频亚洲精品| 国产女同91疯狂高潮互磨| 精品人伦一区二区三区蜜桃网站 | 亚洲国产美女搞黄色| av男人的天堂av| 成人动漫一区二区| 小明看看成人免费视频| 日韩午夜高潮| 青青视频免费在线观看| 精品不卡一区| 国产一区二区黄色| 国产精品xnxxcom| 国产成人激情视频| 国内老司机av在线| 久久激情视频久久| 成a人片在线观看www视频| 亚洲精品720p| 午夜精品久久久久久久99热黄桃 | 国产精品自拍视频在线| 中文亚洲欧美| 久久男人资源站| 91久久久精品国产| 日韩福利一区二区三区| 欧美成人一区在线观看| 99高清视频有精品视频| 婷婷久久免费视频| 国产精品久久国产精品99gif| 成人影院在线视频| 欧美激情视频一区二区三区不卡| 男人天堂久久久| 中文字幕国内精品| 福利视频在线导航| 亚洲欧美日韩久久久久久| 欧美天堂在线视频| 日韩欧美久久久| 国产v片在线观看| 91精品国产手机| 一级特黄aaa| 欧美日韩视频专区在线播放| 国产第一页在线观看| 色呦呦国产精品| 国产小视频在线免费观看| 亚洲r级在线视频| 日韩在线观看第一页| 亚洲国产精品久久一线不卡| 麻豆91精品91久久久| 一区二区三区免费观看| 久久国产精品波多野结衣av| 一区二区视频在线看| 久久一级黄色片| 亚洲高清一区二区三区| 久久9999久久免费精品国产| 亚洲一区二区三区四区在线免费观看| 强乱中文字幕av一区乱码| 一区二区三区在线影院| 免费一级肉体全黄毛片| 亚洲成人你懂的| 国产午夜精品一区二区理论影院| 亚洲一区二区三区中文字幕| 国产污视频在线看| 精品久久久久久久久久ntr影视| 国产成人一区二区三区影院在线| 午夜伦理一区二区| 一级成人黄色片| 欧洲av在线精品| 亚洲无码久久久久| 欧美一卡二卡在线| 黄色小视频免费在线观看| 亚洲精品中文字幕女同| 国产精品久久一区二区三区不卡| 中国china体内裑精亚洲片| 色综合久久久久综合一本到桃花网| 精品国产美女在线| 欧美人与动牲性行为| 青青a在线精品免费观看| 日韩精品麻豆| 亚洲精品免费网站| 免费看久久久| 一本色道久久综合亚洲精品婷婷| 综合国产在线| 欧美 日本 亚洲| 日本vs亚洲vs韩国一区三区二区| 亚洲一二区在线观看| 不卡高清视频专区| 久久美女免费视频| 亚洲精品国产无套在线观| 日韩精品视频免费看| 在线观看视频一区| 国产高清视频免费| 亚洲免费中文字幕| 99福利在线| 欧美中文字幕在线播放| 日韩三级成人| 麻豆成人在线播放| 亚洲九九视频| 免费在线观看毛片网站| 国产一本一道久久香蕉| 成人h动漫精品一区| 《视频一区视频二区| 九九九在线观看| 日韩一区二区三区免费观看| 欧美性孕妇孕交| 九九久久综合网站| 视频在线日韩| 国产富婆一区二区三区| 色琪琪久久se色| 青青艹视频在线| 国产美女久久久久| 免费观看a级片| 亚洲电影一级黄| 一本色道久久综合精品婷婷| 日韩精品极品视频| av片在线观看| 国产精品丝袜白浆摸在线| 日韩极品在线| 中文精品无码中文字幕无码专区| 日韩av一区二区三区四区| 日本一卡二卡在线| 亚洲视频在线观看一区| 久久久久久久亚洲| 日韩精品视频免费| 久草在线新免费首页资源站| 成人av色在线观看| 精品毛片免费观看| 日韩视频第二页| av在线播放成人| 久久婷婷综合国产| 欧美一区二区视频在线观看2020 | 亲爱的老师9免费观看全集电视剧| 日韩中文字幕| av磁力番号网| 免费久久99精品国产| 99精品欧美一区二区| 欧美日韩一区二区精品| 三级在线观看网站| 欧美国产日本高清在线 | av综合电影网站| 精品综合久久| 国产日韩综合| 亚洲欧美在线不卡| 午夜精品爽啪视频| 亚洲免费一级片| 欧美激情小视频| 亚洲国产中文在线| 日韩成人手机在线| 成人免费视频一区二区| 国产一级理论片| 精品美女在线播放| 1234区中文字幕在线观看| 粉嫩av一区二区三区免费观看| 欧美女人交a| 2018国产精品| 图片区小说区区亚洲影院| 欧洲综合视频| 国产精品国语对白| 日韩精品一区二区久久| 色戒在线免费观看| 亚洲视频一二三| 精品国产18久久久久久| 欧美极品少妇全裸体| 日韩高清影视在线观看| 国产成人综合一区| 国产精品美女久久久久久久久| 97视频免费在线| 欧美人在线观看| 国产精品乱战久久久| 日韩少妇内射免费播放| 久久精品视频免费| 一级片视频播放| 九九精品在线视频| 亚洲妇女av| 国内外成人免费在线视频| 亚洲免费伊人电影| 欧美一级做性受免费大片免费| 1769国产精品| 成人影院在线| 亚洲欧美日韩中文字幕在线观看| 亚洲成人免费av| 成人欧美一区| 91免费看网站| 久久久xxx| 国产精品丝袜一区二区| 亚洲国产黄色片| 国产成人午夜性a一级毛片| 国产日产欧美一区二区| 99久精品国产| 在线视频免费观看一区| 欧美激情a在线| 国产成人一区二区三区影院| 色18美女社区| 欧美日韩国内自拍| 婷婷免费在线视频| 国产欧美日韩伦理| 蜜臀av亚洲一区中文字幕| 久久免费小视频| 国产一区二区三区视频| 日韩三级av高清片| 国产一区亚洲二区三区| 一区二区三区日本| 国产理论电影在线观看| 成人在线看片| 免费成人小视频| 久久精品视频久久| 最新中文字幕亚洲| 日韩精品丝袜美腿| 色偷偷中文字幕| 欧美亚日韩国产aⅴ精品中极品|