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

浪跡天涯

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

libcurl上傳文件實(shí)例

.

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);


對(duì)于返回頁面,我們可以和上一篇文章所說那樣,設(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;
}

測(cè)試:
我們可以用tomcat寫一個(gè)jsp上傳代碼測(cè)試一下,其中使用到了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)測(cè)試用libcurl POST文件成功。以上是簡單的測(cè)試,比較深入的問題還有待進(jìn)一步研究。
由于我對(duì)HTTP協(xié)議,WEB這塊不是太熟,如果有錯(cuò)誤理解不當(dāng)?shù)牡胤剑€請(qǐng)指正,歡迎大家和我探討,謝謝!

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

評(píng)論

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

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

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

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

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

''''  回復(fù)  更多評(píng)論   


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


<2008年9月>
31123456
78910111213
14151617181920
21222324252627
2829301234
567891011

導(dǎo)航

統(tǒng)計(jì)

常用鏈接

留言簿(22)

隨筆分類(30)

隨筆檔案(29)

文章分類

搜索

積分與排名

最新評(píng)論

閱讀排行榜

評(píng)論排行榜

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            亚洲第一精品电影| 国产精品视频区| 亚洲国产精品久久久久| 久久精品视频免费| 性欧美xxxx大乳国产app| 国产一区二区三区视频在线观看| 欧美在线视频网站| 久久久精品日韩欧美| 亚洲大胆人体视频| 亚洲国产精品久久久久| 欧美激情一区| 亚洲一区免费看| 性欧美激情精品| 亚洲狠狠丁香婷婷综合久久久| 亚洲第一级黄色片| 欧美日韩在线三级| 久久av一区二区| 欧美a级片网| 亚洲欧美日韩另类精品一区二区三区| 亚洲综合第一| 亚洲国产日韩欧美在线99 | 在线观看国产一区二区| 欧美国产精品| 国产精品日韩久久久| 久久综合狠狠综合久久激情| 欧美伦理在线观看| 久久精品首页| 欧美日韩综合在线免费观看| 久久激情综合| 欧美久久久久久久久久| 欧美中文字幕第一页| 老司机久久99久久精品播放免费| 亚洲天堂av在线免费| 久久午夜影视| 欧美制服第一页| 欧美韩日精品| 米奇777在线欧美播放| 国产精品久久久99| 欧美韩日一区二区| 国产综合网站| 一区二区三区四区国产精品| 亚洲高清网站| 久久精品欧美日韩| 新67194成人永久网站| 欧美大片在线观看一区二区| 久久九九国产| 国产人成精品一区二区三| 亚洲免费不卡| 99精品欧美一区二区三区综合在线 | 欧美亚洲一区| 欧美美女日韩| 欧美激情精品久久久久久| 国产亚洲第一区| 在线午夜精品| 在线中文字幕日韩| 欧美激情免费观看| 亚洲高清影视| 亚洲国产欧美久久| 久久亚洲图片| 免费成人网www| 亚洲电影免费观看高清| 久久国产视频网| 久久久蜜桃一区二区人| 国产在线精品一区二区中文| 亚洲男人的天堂在线| 亚洲女性喷水在线观看一区| 欧美日本在线一区| 亚洲精品国产精品国自产在线 | 这里只有精品丝袜| 欧美日韩国产黄| 日韩亚洲欧美综合| 亚洲网站在线播放| 欧美视频免费在线| 亚洲午夜在线视频| 亚洲综合激情| 国产欧美亚洲视频| 久久本道综合色狠狠五月| 欧美在线亚洲在线| 韩曰欧美视频免费观看| 久久精品国产一区二区电影| 欧美91视频| 亚洲毛片一区| 欧美午夜精品理论片a级大开眼界| 亚洲免费观看高清在线观看 | 亚洲国产高清aⅴ视频| 久久综合999| 亚洲欧洲精品一区二区三区| 一本综合精品| 国产视频久久久久久久| 久久久蜜桃精品| 亚洲国产婷婷香蕉久久久久久99 | 久久国产精品久久久久久久久久| 国产午夜精品在线| 欧美va亚洲va香蕉在线| 一区二区欧美激情| 玖玖在线精品| 日韩一区二区免费高清| 国产欧美欧美| 欧美aa在线视频| 亚洲女ⅴideoshd黑人| 蜜臀av在线播放一区二区三区| 亚洲精品一区久久久久久| 国产精品久久毛片a| 久久九九国产精品| 日韩一级精品| 免费黄网站欧美| 午夜精品视频在线观看| 亚洲精品亚洲人成人网| 国产精品自拍在线| 欧美成人dvd在线视频| 午夜欧美不卡精品aaaaa| 欧美成人有码| 久久久久高清| 午夜在线成人av| av成人动漫| 亚洲盗摄视频| 国产日韩欧美中文| 欧美三日本三级三级在线播放| 久久久久综合网| 亚洲欧美日韩国产成人精品影院| 亚洲狠狠丁香婷婷综合久久久| 久久国内精品视频| 亚洲欧美国产精品桃花| 亚洲国产精品第一区二区三区| 国产精品视频免费观看| 欧美日产一区二区三区在线观看| 久久精品免费电影| 亚洲女性裸体视频| 亚洲天堂偷拍| 亚洲天堂av综合网| 99re66热这里只有精品3直播| 欧美sm重口味系列视频在线观看| 欧美一区二区三区精品| 亚洲欧美国产高清| 国产精品99久久久久久久vr| 日韩视频一区二区在线观看| 亚洲国产另类 国产精品国产免费| 国产拍揄自揄精品视频麻豆| 国产精品在线看| 国产精品嫩草99a| 国产精品免费观看在线| 欧美视频一区在线| 欧美视频一区二区三区四区| 欧美日本久久| 欧美三级乱码| 国产精品久久久久久久久果冻传媒| 欧美日韩在线观看一区二区三区| 欧美久久久久免费| 欧美日韩一区国产| 国产精品成人免费精品自在线观看 | 久久久久一本一区二区青青蜜月| 久久精品国产v日韩v亚洲| 欧美在线|欧美| 久久精品国产96久久久香蕉| 久久男人资源视频| 久久综合九色综合欧美就去吻| 久久亚洲国产成人| 欧美国产成人精品| 亚洲精品国产精品国自产观看 | 美女诱惑黄网站一区| 欧美99久久| 91久久精品日日躁夜夜躁国产| 亚洲免费激情| 亚洲一区二区成人在线观看| 午夜激情综合网| 久久蜜桃资源一区二区老牛| 欧美激情一区二区三级高清视频| 欧美啪啪成人vr| 国产精品一区二区在线观看网站 | 欧美精品一区视频| 国产精品地址| 国内精品写真在线观看| 亚洲国产成人精品久久久国产成人一区| 亚洲激情在线播放| 在线一区免费观看| 久久久久9999亚洲精品| 亚洲国产一区二区三区在线播| 99亚洲视频| 久久精品欧洲| 欧美日韩一本到| 狠狠网亚洲精品| 在线一区日本视频| 麻豆精品视频在线观看| 亚洲人成网站影音先锋播放| 亚洲免费视频网站| 欧美www视频| 国产夜色精品一区二区av| 亚洲精品视频免费| 久久国产精品电影| 亚洲靠逼com| 久久男人av资源网站| 欧美视频在线观看 亚洲欧| 在线国产亚洲欧美| 亚洲欧美日韩专区| 亚洲国产精品福利| 欧美影院成年免费版| 欧美日韩一区二区欧美激情| 亚洲电影第1页| 久久精品国产成人| 亚洲午夜久久久久久尤物|