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

浪跡天涯

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

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 浪跡天涯 閱讀(15689) 評論(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年11月>
2627282930311
2345678
9101112131415
16171819202122
23242526272829
30123456

導航

統計

常用鏈接

留言簿(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>
            日韩视频在线观看免费| 午夜一级在线看亚洲| 亚洲欧美乱综合| 91久久久亚洲精品| 久久精品91久久久久久再现| 亚洲免费在线观看视频| 亚洲综合国产精品| 久久精品视频免费| 欧美v亚洲v综合ⅴ国产v| 免费在线观看日韩欧美| 亚洲欧洲一区二区天堂久久| 99国产欧美久久久精品| 亚洲免费一级电影| 久久亚洲综合色一区二区三区| 久久先锋资源| 欧美日韩直播| 国产日韩欧美| 亚洲国产精品嫩草影院| 一区二区三区色| 久久精品国产在热久久| 欧美激情中文字幕乱码免费| 中文亚洲欧美| 久热这里只精品99re8久| 国产精品久久77777| 韩国欧美一区| 亚洲一区二区三区高清| 免费一级欧美片在线播放| 亚洲美女91| 美女视频网站黄色亚洲| 国产精品私人影院| 亚洲精品国产拍免费91在线| 久久不射电影网| 亚洲精选成人| 免费亚洲网站| 国外成人性视频| 亚洲午夜精品久久| 男女av一区三区二区色多| 亚洲私人影吧| 亚洲日本无吗高清不卡| 国产精品日韩| 一区二区三区日韩精品| 欧美激情一区二区三区四区| 欧美在线观看网址综合| 国产精品第三页| 亚洲精品美女在线观看播放| 久久久久久香蕉网| 亚洲欧美视频一区二区三区| 欧美激情91| 久久漫画官网| 国内激情久久| 欧美一区二区三区免费观看 | 亚洲一区精品视频| 免费视频一区二区三区在线观看| 欧美一区二区三区四区在线| 国产精品毛片高清在线完整版| 中国成人亚色综合网站| 亚洲人午夜精品| 欧美高清一区| 亚洲精品黄网在线观看| 欧美成人一区二区三区片免费| 久久激情中文| 尹人成人综合网| 久久综合五月| 狂野欧美一区| 99国产精品99久久久久久粉嫩| 亚洲第一伊人| 欧美高清在线观看| 亚洲国产精品一区二区www在线| 欧美成人精品在线| 欧美国产先锋| 亚洲一区二区三区在线视频| 正在播放欧美视频| 国产午夜精品视频| 久久精品视频免费播放| 久久九九免费视频| 亚洲精选一区| 亚洲手机在线| 亚洲国产视频直播| 日韩写真视频在线观看| 国产精品国产成人国产三级| 欧美亚洲日本网站| 久久久久久综合| 日韩一级大片| 亚洲欧美久久| 亚洲激情视频网| 一本一本久久a久久精品牛牛影视| 欧美性猛交一区二区三区精品| 午夜日韩电影| 久久综合网络一区二区| 正在播放日韩| 久久丁香综合五月国产三级网站| 在线观看视频免费一区二区三区| 亚洲高清激情| 国产免费成人在线视频| 欧美黄色日本| 国产精品日韩欧美一区二区三区| 久久欧美肥婆一二区| 亚洲国产成人精品久久久国产成人一区| 99av国产精品欲麻豆| 国产精品丝袜91| 亚洲国产精品一区二区www| 国产精品久久久久久久久久ktv | 韩国av一区二区三区| 亚洲人成网站色ww在线| 国产欧美日韩激情| 亚洲人体影院| 亚洲成在线观看| 亚洲欧美国产精品专区久久| 亚洲人成网在线播放| 欧美一区二区视频观看视频| 一区二区不卡在线视频 午夜欧美不卡在 | 依依成人综合视频| 日韩一区二区精品视频| 激情久久久久久| 日韩天堂在线观看| 亚洲国产成人高清精品| 亚洲视频电影图片偷拍一区| 亚洲国产精品久久久久秋霞不卡 | 欧美国产日韩xxxxx| 久久亚洲综合网| 国产精品久久久久9999高清| 欧美成人精品高清在线播放| 国产精品日韩专区| 99精品国产福利在线观看免费| 亚洲国产高清在线观看视频| 羞羞答答国产精品www一本 | 亚洲美女黄色| 日韩亚洲欧美精品| 老司机精品福利视频| 久久亚洲一区二区三区四区| 国产视频丨精品|在线观看| 亚洲调教视频在线观看| 亚洲在线免费视频| 国产精品福利网站| 亚洲一区二区毛片| 亚洲欧美经典视频| 国产精品推荐精品| 欧美一区二区精美| 久久激情五月激情| 国产日韩欧美中文在线播放| 亚洲一区二区三区四区在线观看| 亚洲欧美日本国产专区一区| 国产精品久久久久国产精品日日| 一二三四社区欧美黄| 亚洲在线黄色| 国内激情久久| 欧美激情精品久久久久久| 日韩一级欧洲| 久久不射中文字幕| 在线观看一区视频| 国产精品入口| 激情文学一区| 久久综合一区二区三区| 亚洲大胆人体在线| 亚洲伦理在线| 国产精品美女在线| 久久爱另类一区二区小说| 蜜臀av性久久久久蜜臀aⅴ| 亚洲国产一区在线观看| 欧美体内she精视频| 欧美一区二区视频免费观看| 免费成人黄色| 亚洲视频欧洲视频| 国产欧美日韩精品在线| 久久久噜噜噜久久久| 亚洲精品国产拍免费91在线| 亚洲一区二区毛片| 尤物视频一区二区| 欧美私人网站| 久久一区二区精品| 中文在线一区| 欧美国产精品日韩| 性视频1819p久久| **性色生活片久久毛片| 欧美乱在线观看| 久久动漫亚洲| 一区二区三区精品视频| 美女日韩在线中文字幕| 亚洲欧美综合v| 亚洲日本aⅴ片在线观看香蕉| 国产精品网站在线播放| 欧美jizzhd精品欧美巨大免费| 亚洲一区在线视频| 欧美激情精品久久久久久大尺度| 亚洲欧美中文日韩在线| aa国产精品| 亚洲国产精品嫩草影院| 国产主播精品| 国产精品爽爽爽| 欧美色视频在线| 欧美高清在线一区| 久久精品国产亚洲高清剧情介绍| 一区二区三区四区五区精品| 亚洲电影免费观看高清| 久久久久久九九九九| 亚洲欧美日产图| 在线一区二区三区做爰视频网站| 亚洲国产精品久久人人爱蜜臀 | 99精品福利视频| 亚洲国产精品久久精品怡红院|