青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

浪跡天涯

唯有努力...
努力....再努力...

libcurl上傳文件實例

.

Using POST with HTTP 1.1 implies the use of a "Expect: 100-continue" header. You can disable this header with CURLOPT_HTTPHEADER as usual.

When setting CURLOPT_HTTPPOST, it will automatically set CURLOPT_NOBODY to 0 (since 7.14.1).


CURLOPT_POST   --application/x-www-form-urlencoded形式

A non-zero parameter tells the library to do a regular HTTP post. This will also make the library use the a "Content-Type: application/x-www-form-urlencoded" header. (This is by far the most commonly used POST method).

Use one of CURLOPT_POSTFIELDS or CURLOPT_COPYPOSTFIELDS options to specify what data to post and CURLOPT_POSTFIELDSIZE or CURLOPT_POSTFIELDSIZE_LARGE to set the data size.

Optionally, you can provide data to POST using the CURLOPT_READFUNCTION and CURLOPT_READDATA options but then you must make sure to not set CURLOPT_POSTFIELDS to anything but NULL. When providing data with a callback, you must transmit it using chunked transfer-encoding or you must set the size of the data with the CURLOPT_POSTFIELDSIZE or CURLOPT_POSTFIELDSIZE_LARGE option. To enable chunked encoding, you simply pass in the appropriate Transfer-Encoding header, see the post-callback.c example.

You can override the default POST Content-Type: header by setting your own with CURLOPT_HTTPHEADER.

Using POST with HTTP 1.1 implies the use of a "Expect: 100-continue" header. You can disable this header with CURLOPT_HTTPHEADER as usual.

If you use POST to a HTTP 1.1 server, you can send data without knowing the size before starting the POST if you use chunked encoding. You enable this by adding a header like "Transfer-Encoding: chunked" with CURLOPT_HTTPHEADER. With HTTP 1.0 or without chunked transfer, you must specify the size in the request.

When setting CURLOPT_POST to a non-zero value, it will automatically set CURLOPT_NOBODY to 0 (since 7.14.1).

If you issue a POST request and then want to make a HEAD or GET using the same re-used handle, you must explicitly set the new request type using CURLOPT_NOBODY or CURLOPT_HTTPGET or similar.


以上是兩種POST方式,具體代碼如下:
    ALLUPLOADFILES::iterator iter = allFiles.begin();
    
//如果含有文件 //name="files"; filename="file1.txt"    
    if( bFileFlag ) //以form-dataf方式post
    {
        
for (;iter != allFiles.end();iter++)
        
{
            
if ( iter->isFile )
            
{
                my_bytestr_url_encode(iter
->fileName);
                curl_formadd(
&post, &last, CURLFORM_COPYNAME , iter->contrlID.c_str(),
                    CURLFORM_BUFFER, iter
->fileName.c_str(),
                    CURLFORM_BUFFERPTR,iter
->data.c_str(),
                    CURLFORM_END);    
            }

            
else
            
{
                curl_formadd(
&post, &last, CURLFORM_COPYNAME , iter->contrlID.c_str(),
                    CURLFORM_COPYCONTENTS,iter
->data.c_str(),
                    CURLFORM_END);    
            }

        }

    }

    
else //以application/x-www-form-urlencoded方式post
    {
        
for (;iter != allFiles.end();iter++)
        
{
            my_bytestr_url_encode(iter
->contrlID);
            my_bytestr_url_encode(iter
->data);
            postbuffer 
+= iter->contrlID;
            postbuffer 
+= "=";
            postbuffer 
+= iter->data;
            postbuffer 
+= "&";
        }

    }



    
if (bFileFlag) 
        curl_easy_setopt(curl, CURLOPT_HTTPPOST,post);
    
else 
    
{
        curl_easy_setopt(curl, CURLOPT_POST,
1);
        curl_easy_setopt(curl, CURLOPT_COPYPOSTFIELDS  , postbuffer.c_str());
    }


    code 
= curl_easy_perform(curl);


對于返回頁面,我們可以和上一篇文章所說那樣,設(shè)置write的回調(diào)函數(shù),寫入文件即可:
    curl_easy_setopt(curl, CURLOPT_VERBOSE, 1L);
    curl_easy_setopt(curl, CURLOPT_URL, url.c_str());
    curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, 
1);
    curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, writer);

long writer(void
*data, int size, int nmemb, string &content)
{
    long sizes 
= size * nmemb;
    string temp(data,sizes);
    printf(
"receive data(%d bytes):\r\n%s",  sizes, (char*)data );
    content 
+= temp; 
    
return sizes;
}

測試:
我們可以用tomcat寫一個jsp上傳代碼測試一下,其中使用到了smartUpload組件,代碼如下:upload.html
<form action="upload.jsp" method="post" ENCTYPE="multipart/form-data">

輸入名稱:
<input type="type" name="name"><br>

選擇要上傳的圖片:

<input type="file" name="pic">

<input type="submit" value="上傳">

</form>
upload.jsp如下:
<jsp:useBean id="smart" scope="page" class="org.lxh.smart.SmartUpload"/>

<%
       
//上傳初始化
       smart.initialize(pageContext);
       
//準(zhǔn)備上傳
       smart.upload();     
       
//保存上傳的文件
       
//smart.save("/upload");
       
//取得文件的擴(kuò)展名稱
       String ext = smart.getFiles().getFile(0).getFileExt();
%>
<%
       
//String name=request.getParameter("name"); 表單被封裝了,不能用這種方法取值.
       String name=smart.getRequest().getParameter("name");
%> 

       
//<%=name+"."+ext%>
<%       //保存文件,包括改名.
       smart.getFiles().getFile(0).saveAs("/upload/"+name+"."+ext);
%>

經(jīng)測試用libcurl POST文件成功。以上是簡單的測試,比較深入的問題還有待進(jìn)一步研究。
由于我對HTTP協(xié)議,WEB這塊不是太熟,如果有錯誤理解不當(dāng)?shù)牡胤剑€請指正,歡迎大家和我探討,謝謝!

posted on 2008-07-03 16:49 浪跡天涯 閱讀(15695) 評論(3)  編輯 收藏 引用 所屬分類: Lib

評論

# re: libcurl上傳文件實例 2008-07-03 21:15 企業(yè)即時通訊

容(提交失敗后,可以通過“恢復(fù)上次提交”恢復(fù)剛剛提交的內(nèi)容)   回復(fù)  更多評論   

# re: libcurl上傳文件實例 2008-09-11 13:40 浪跡天涯

你說的是斷點續(xù)傳的問題,目前l(fā)ibcurl好像并不支持!  回復(fù)  更多評論   

# re: libcurl上傳文件實例 2014-01-08 21:08 ]]]]

''''  回復(fù)  更多評論   


只有注冊用戶登錄后才能發(fā)表評論。
網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


<2008年7月>
293012345
6789101112
13141516171819
20212223242526
272829303112
3456789

導(dǎo)航

統(tǒng)計

常用鏈接

留言簿(22)

隨筆分類(30)

隨筆檔案(29)

文章分類

搜索

積分與排名

最新評論

閱讀排行榜

評論排行榜

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            亚洲精品久久久久久一区二区| 玖玖国产精品视频| 久久综合成人精品亚洲另类欧美| 亚洲视频一二区| 久久综合电影| 久久福利一区| 国产精品久久久久久亚洲调教| 亚洲国产成人不卡| 国产专区综合网| 亚洲一区免费| 亚洲欧美精品中文字幕在线| 欧美精品三级在线观看| 免费成人av在线| 韩国亚洲精品| 欧美在线观看网站| 欧美一区深夜视频| 国产精品无码永久免费888| 亚洲裸体视频| 一本久久综合| 欧美日韩伊人| 日韩亚洲视频在线| 一本色道久久综合亚洲精品按摩 | 欧美午夜片在线免费观看| 欧美韩日视频| 亚洲激情视频在线播放| 乱码第一页成人| 欧美大片一区二区| 亚洲国产精品va在线看黑人动漫| 久久久久久久97| 老牛嫩草一区二区三区日本 | 亚洲第一黄网| 亚洲精品乱码久久久久久蜜桃91 | 亚洲最快最全在线视频| 欧美日本精品| 亚洲最新中文字幕| 亚洲欧美日韩一区在线| 国产欧美精品久久| 久久成人免费视频| 欧美高清你懂得| 日韩视频一区二区三区| 欧美丝袜一区二区三区| 亚洲欧美制服另类日韩| 久久另类ts人妖一区二区| 有坂深雪在线一区| 欧美韩日一区| 中国av一区| 久久精品理论片| 亚洲国产精品美女| 欧美日韩精品一区| 亚洲欧美在线aaa| 美女精品国产| 亚洲一二三区精品| 国产欧美精品日韩精品| 看片网站欧美日韩| 妖精视频成人观看www| 久久成人在线| 一本大道久久a久久综合婷婷| 国产精品毛片大码女人 | 亚洲尤物视频网| 久久在线免费| 亚洲天堂av电影| 伊人色综合久久天天| 欧美日韩高清在线| 欧美影院在线| 一本综合久久| 农夫在线精品视频免费观看| 亚洲一区二区三区在线播放| 伊人一区二区三区久久精品| 欧美午夜激情小视频| 久久久福利视频| 亚洲天堂av图片| 欧美福利专区| 久久国产综合精品| 夜夜嗨av一区二区三区四区| 韩日视频一区| 国产精品香蕉在线观看| 欧美大片一区二区| 久久黄金**| 亚洲在线播放| 日韩亚洲精品视频| 亚洲福利在线观看| 久久久久久久网站| 亚洲欧美日韩国产一区二区| 亚洲理论电影网| 亚洲动漫精品| 国产一区二区三区在线观看精品| 欧美性猛交xxxx乱大交蜜桃| 欧美日本一区| 欧美xxx在线观看| 久久婷婷国产综合国色天香| 欧美一乱一性一交一视频| 99精品国产一区二区青青牛奶| 欧美大片国产精品| 久久免费高清| 久久久青草青青国产亚洲免观| 亚洲伊人一本大道中文字幕| 夜夜狂射影院欧美极品| 亚洲久久成人| 99ri日韩精品视频| 亚洲国产一区二区a毛片| 精品成人国产| 影音欧美亚洲| 亚洲高清视频一区二区| 伊人久久亚洲热| 在线观看亚洲a| 在线不卡中文字幕播放| 国内精品久久久久久| 国产亚洲精品久久久久动| 国产欧美一区二区在线观看| 国产欧美日韩综合一区在线播放 | 欧美一区二区私人影院日本 | 久久午夜羞羞影院免费观看| 久久精品国产亚洲一区二区| 久久国内精品自在自线400部| 久久精品99国产精品酒店日本| 欧美亚洲综合网| 久久久99爱| 美女精品视频一区| 欧美成人中文字幕| 亚洲欧洲综合另类在线| 亚洲国产美女久久久久| 亚洲乱码日产精品bd| 夜夜爽99久久国产综合精品女不卡| 一区二区成人精品| 亚洲免费影院| 久久久欧美精品| 欧美福利视频在线| 欧美三级精品| 国产在线国偷精品产拍免费yy| 亚洲大片一区二区三区| 亚洲欧洲日产国码二区| 亚洲午夜精品在线| 欧美在线3区| 欧美激情a∨在线视频播放| 亚洲日本欧美| 午夜精品久久久久久久久| 久久精品最新地址| 欧美精品激情blacked18| 国产精品久久久久aaaa九色| 国产自产高清不卡| 99热这里只有精品8| 小处雏高清一区二区三区 | 久久久五月婷婷| 欧美日韩视频| 悠悠资源网亚洲青| 一区二区激情视频| 欧美自拍偷拍午夜视频| 亚洲电影av在线| 亚洲一区免费网站| 免费成人av在线看| 国产日韩av一区二区| 最新高清无码专区| 性欧美精品高清| 亚洲韩国日本中文字幕| 亚洲男人av电影| 欧美老女人xx| 亚洲黄一区二区三区| 亚洲在线视频网站| 欧美大片免费| 欧美在线观看网址综合| 欧美日韩亚洲一区二区三区四区| 激情婷婷欧美| 午夜在线精品偷拍| 亚洲三级免费| 免费欧美日韩| 久久er99精品| 久久久久综合一区二区三区| 亚洲一区免费网站| 一本一本久久a久久精品牛牛影视| 激情综合视频| 欧美一区成人| 亚洲免费大片| 蜜桃av一区| 一区久久精品| 久久久综合香蕉尹人综合网| 亚洲香蕉网站| 欧美色欧美亚洲高清在线视频| 亚洲福利视频一区| 久久亚洲欧美| 久久精品国产一区二区三区| 国产日韩欧美麻豆| 亚洲女人av| av成人免费| 欧美日韩视频在线| 日韩亚洲一区二区| 亚洲福利av| 欧美精品一区二区精品网| 亚洲风情在线资源站| 麻豆成人在线| 久久久久久久久久久成人| 国产在线日韩| 久久久久久网站| 久久国产精品99久久久久久老狼| 欧美日韩在线视频首页| 欧美一区二区在线免费播放| 日韩网站在线| 亚洲美女免费视频| 欧美日韩在线播放三区四区| 在线视频你懂得一区| 日韩午夜激情av|