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

浪跡天涯

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

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


對于返回頁面,我們可以和上一篇文章所說那樣,設置write的回調函數,寫入文件即可:
    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);
       
//準備上傳
       smart.upload();     
       
//保存上傳的文件
       
//smart.save("/upload");
       
//取得文件的擴展名稱
       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);
%>

經測試用libcurl POST文件成功。以上是簡單的測試,比較深入的問題還有待進一步研究。
由于我對HTTP協議,WEB這塊不是太熟,如果有錯誤理解不當的地方,還請指正,歡迎大家和我探討,謝謝!

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

評論

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

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

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

你說的是斷點續傳的問題,目前libcurl好像并不支持!  回復  更多評論   

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

''''  回復  更多評論   


只有注冊用戶登錄后才能發表評論。
網站導航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


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

導航

統計

常用鏈接

留言簿(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>
            亚洲卡通欧美制服中文| 久久免费午夜影院| 亚洲国产精品一区二区第一页| 亚洲欧美久久久| 国产精品呻吟| 欧美一区激情视频在线观看| 亚洲网站视频福利| 国产欧美va欧美va香蕉在| 欧美一区二区三区视频在线| 午夜精品影院| 在线免费观看日本欧美| 欧美激情日韩| 欧美精品综合| 欧美一区日韩一区| 久久久久99| 亚洲精品欧美日韩| 亚洲视频在线观看网站| 国产色综合久久| 欧美成人首页| 欧美精品久久久久久| 亚洲欧美在线观看| 欧美一区二区三区在线视频| 亚洲二区在线观看| 亚洲日本黄色| 国产日韩欧美在线播放不卡| 欧美91大片| 欧美日韩亚洲一区| 久久精品日产第一区二区| 久久亚洲不卡| 亚洲欧美国产高清| 久久男人资源视频| 亚洲视频一区二区| 久久久久成人网| 亚洲天堂偷拍| 久久亚洲午夜电影| 亚洲主播在线播放| 美日韩精品视频免费看| 亚洲欧美激情视频在线观看一区二区三区| 销魂美女一区二区三区视频在线| 亚洲精品网站在线播放gif| 宅男噜噜噜66国产日韩在线观看| 国精品一区二区| 亚洲精品之草原avav久久| 国产日韩欧美一区二区三区在线观看| 欧美激情五月| 国产在线精品一区二区夜色| 亚洲精品一区二区在线| 在线免费不卡视频| 亚洲在线观看| 一区二区三区久久精品| 蜜臀av性久久久久蜜臀aⅴ四虎| 亚洲欧美一区在线| 欧美绝品在线观看成人午夜影视| 久久久噜噜噜久久久| 国产精品久久7| 亚洲国产女人aaa毛片在线| 极品尤物久久久av免费看| 在线亚洲免费| 一片黄亚洲嫩模| 欧美暴力喷水在线| 免费成人av在线| 狠狠色狠狠色综合日日五| 亚洲一区二区三区免费视频| 国产精品99久久99久久久二8| 久久综合给合久久狠狠色| 久久久久久免费| 国产美女精品视频| 亚洲一区精品电影| 亚洲曰本av电影| 欧美日韩国产在线观看| 亚洲精品视频一区二区三区| 亚洲日本一区二区| 快射av在线播放一区| 久久夜色精品国产欧美乱| 国产午夜精品视频| 久久精品一区蜜桃臀影院| 久久精品99国产精品| 国产欧美日韩免费看aⅴ视频| 亚洲天堂偷拍| 欧美综合二区| 好吊成人免视频| 久久婷婷成人综合色| 欧美插天视频在线播放| 亚洲激情网站| 欧美日韩国产成人| 日韩一级精品| 午夜精品网站| 狠狠色丁香婷婷综合久久片| 久久综合狠狠| 99精品热6080yy久久| 午夜精品福利一区二区蜜股av| 国产精品日韩欧美大师| 欧美在线日韩在线| 理论片一区二区在线| 91久久国产精品91久久性色| 欧美激情偷拍| 亚洲自啪免费| 欧美成人免费网| 中日韩美女免费视频网站在线观看| 欧美日韩另类国产亚洲欧美一级| 亚洲一区二区三区精品在线 | 美女尤物久久精品| 亚洲精品国产欧美| 午夜免费日韩视频| 亚洲第一在线综合网站| 欧美日韩卡一卡二| 欧美一区国产一区| 亚洲国产精品一区二区www在线| 亚洲一区三区在线观看| 激情五月婷婷综合| 欧美日韩高清在线| 久久av红桃一区二区小说| 亚洲黑丝在线| 欧美中文字幕| 一区二区电影免费在线观看| 国产真实乱偷精品视频免| 欧美另类99xxxxx| 香蕉久久一区二区不卡无毒影院| 亚洲国产黄色片| 欧美一区二区三区另类| 亚洲美女av在线播放| 国产视频一区在线观看一区免费| 欧美国产精品久久| 欧美在线免费观看视频| 99在线精品免费视频九九视| 欧美.com| 久久精品五月婷婷| 亚洲一区久久| 日韩一区二区精品| 麻豆国产va免费精品高清在线| 亚洲免费在线| 一本大道av伊人久久综合| 一区免费观看视频| 国产欧美一区二区色老头| 欧美jizz19性欧美| 最新国产成人在线观看| 久久久综合香蕉尹人综合网| 亚洲在线免费视频| 日韩亚洲欧美在线观看| 永久久久久久| 国内偷自视频区视频综合| 国产精品国产亚洲精品看不卡15 | 一本久久精品一区二区| 欧美激情a∨在线视频播放| 久久久久国产精品麻豆ai换脸 | 国产嫩草一区二区三区在线观看 | 亚洲午夜激情| 日韩图片一区| 亚洲国产欧美一区二区三区同亚洲| 免费成人黄色| 欧美成人午夜激情在线| 欧美国产第二页| 亚洲第一视频| 91久久精品视频| 亚洲韩国日本中文字幕| 亚洲精品久久久久| 最新国产成人在线观看| 亚洲美女一区| 一区二区三区日韩| 中文国产一区| 午夜影视日本亚洲欧洲精品| 欧美一区二区视频观看视频| 欧美影院视频| 久久免费视频一区| 欧美成人综合网站| 欧美日韩另类一区| 国产精品欧美精品| 国产亚洲一区二区精品| 国语自产精品视频在线看8查询8 | 欧美日韩专区在线| 欧美天堂亚洲电影院在线观看| 国产精品成人一区二区网站软件 | 亚洲第一区在线| 亚洲国产一区二区三区青草影视 | 欧美吻胸吃奶大尺度电影| 国产精品入口66mio| 国产女主播一区二区| 黄色日韩精品| 亚洲美洲欧洲综合国产一区| 亚洲免费影院| 欧美电影电视剧在线观看| 99精品热视频只有精品10| 亚洲欧美一区二区激情| 奶水喷射视频一区| 国产精品v亚洲精品v日韩精品| 国产综合精品| 99视频超级精品| 久久精品国产视频| 日韩视频在线免费观看| 性欧美大战久久久久久久久| 欧美a级一区| 国产亚洲福利一区| 一区二区三区www| 久久一区二区三区av| 99在线精品免费视频九九视| 久久久久久亚洲精品杨幂换脸 | 久久精品国产在热久久| 欧美激情中文字幕乱码免费| 国产在线高清精品| 日韩视频免费在线|