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

浪跡天涯

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

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>
            国产精品国产自产拍高清av王其| 国产日韩精品在线播放| 亚洲国产乱码最新视频| 亚洲一区不卡| 在线亚洲一区观看| 亚洲男女自偷自拍图片另类| 亚洲欧美日韩国产一区二区三区| 亚洲欧美国产日韩天堂区| 亚洲欧美在线磁力| 久久在线免费观看视频| 99精品久久| 久久久欧美一区二区| 性做久久久久久久免费看| 久久精品av麻豆的观看方式| 蜜桃久久av一区| 欧美日韩亚洲一区二区三区四区| 欧美午夜电影在线观看| 国产视频久久久久久久| 亚洲区一区二| 性欧美1819性猛交| 欧美黑人在线观看| 亚洲性视频网址| 久久一区二区三区国产精品 | 国产手机视频一区二区| 亚洲成色www久久网站| 99精品国产福利在线观看免费| 欧美在线亚洲在线| 亚洲人成在线观看一区二区| 欧美在线播放视频| 欧美日韩亚洲精品内裤| 亚洲第一黄色| 久久国产精品黑丝| 日韩一二在线观看| 欧美一区二区| 国产精品黄色在线观看| 亚洲精品欧洲| 精品动漫av| 欧美精品一区二区三区在线看午夜| 国产精品欧美一区喷水 | 欧美日韩在线电影| 在线观看一区视频| 久久精品视频在线观看| 99re亚洲国产精品| 久久综合久久综合这里只有精品 | 国产精品国产三级国产aⅴ入口 | 亚洲乱码国产乱码精品精天堂| 欧美一区三区二区在线观看| 久久天天躁狠狠躁夜夜爽蜜月 | 99在线热播精品免费99热| 欧美日韩国产色综合一二三四| 欧美一区二区三区日韩| 一区二区三区国产| 国产精品成人午夜| 亚洲免费电影在线| 亚洲电影网站| 久久成人亚洲| 欧美中文字幕在线| 国产欧美日韩麻豆91| 亚洲午夜伦理| 日韩一区二区精品| 欧美91福利在线观看| 亚洲欧洲一区二区在线观看| 久久久久国产一区二区| 日韩亚洲欧美高清| 欧美极品一区| 亚洲男人天堂2024| 午夜精品在线| 亚洲精品久久久久久久久久久久| 久久综合综合久久综合| 欧美xart系列高清| 精久久久久久| 一区二区高清视频在线观看| 国产亚洲第一区| 亚洲你懂的在线视频| 国产专区欧美精品| 久久亚洲电影| 亚洲人精品午夜| 亚洲美女网站| 久久国产精品一区二区| 亚洲精品国精品久久99热| 欧美精品七区| 久久久久久久999精品视频| 极品少妇一区二区三区| 欧美.www| 欧美日韩免费一区| 欧美一区二区三区免费在线看| 香蕉久久国产| 亚洲国产成人在线视频| 99re6这里只有精品| 亚洲精品中文字幕有码专区| 国产精品a级| 欧美国产精品一区| 亚洲午夜av电影| 亚洲永久免费视频| 亚洲精品欧洲精品| 亚洲欧洲偷拍精品| 一区二区三区|亚洲午夜| 在线亚洲观看| 原创国产精品91| 一区二区三区www| 亚洲高清123| 麻豆国产精品va在线观看不卡| 中日韩午夜理伦电影免费| 亚洲综合色婷婷| 国产一区二区高清视频| 欧美高清视频在线 | 久久国产精品网站| 欧美成人国产一区二区| 欧美一区二区三区免费观看| 欧美精品日韩精品| 欧美 日韩 国产精品免费观看| 国产精品乱码一区二区三区| 欧美成人免费视频| 国产一区二区0| 中文成人激情娱乐网| 亚洲黄色av| 亚洲国产成人在线| 久久久亚洲国产美女国产盗摄| 欧美黄色影院| 免费不卡欧美自拍视频| 国产毛片一区二区| 在线视频你懂得一区二区三区| 亚洲欧洲另类| 亚洲男人第一网站| 激情综合自拍| 亚洲欧美视频在线观看视频| 女人香蕉久久**毛片精品| 久久久精品免费视频| 国产精品亚洲一区| 亚洲一区二区精品在线观看| 亚洲免费观看| 欧美极品影院| 91久久国产综合久久蜜月精品| 一区二区在线视频播放| 亚洲第一页中文字幕| 快播亚洲色图| 亚洲午夜小视频| 亚洲破处大片| 国产精品亚洲片夜色在线| 国产精品亚洲不卡a| 日韩视频精品| 一区二区日韩免费看| 欧美国内亚洲| 日韩一级成人av| 亚洲一区二区精品视频| 欧美性生交xxxxx久久久| 日韩手机在线导航| 亚洲影院免费观看| 国产欧美一区二区色老头| 欧美亚洲网站| 欧美成人精品| 亚洲美女电影在线| 国产精品久久久久91| 亚洲在线国产日韩欧美| 久久久精品999| 亚洲精品久久久一区二区三区| 欧美乱大交xxxxx| 亚洲天堂av在线免费观看| 欧美一级播放| 在线观看成人一级片| 亚洲男人的天堂在线观看| 国产精品麻豆va在线播放| 欧美亚州在线观看| 亚洲一区日韩在线| 一二三四社区欧美黄| 国产精品第一区| 久久精精品视频| 亚洲国产精品久久人人爱蜜臀| 亚洲精品免费在线| 国产精品久久影院| 久久男人资源视频| 日韩午夜电影在线观看| 久久爱www.| 亚洲人成网站在线观看播放| 国产精品扒开腿爽爽爽视频 | 亚洲欧美激情精品一区二区| 久久噜噜亚洲综合| 一本色道久久综合一区| 欧美激情一区在线| 在线欧美亚洲| 欧美日韩黄视频| 性伦欧美刺激片在线观看| 亚洲电影第三页| 久久av一区二区三区亚洲| 亚洲三级视频在线观看| 国产精品永久免费在线| 久久综合久久综合九色| 亚洲一区日韩在线| 日韩视频中午一区| 亚洲国产精品ⅴa在线观看| 欧美影院成人| 在线亚洲欧美| 亚洲精品欧美| 亚洲黄色尤物视频| 国模精品娜娜一二三区| 国产精品裸体一区二区三区| 欧美韩国一区| 免费在线日韩av| 久久久亚洲人| 久久精品国产77777蜜臀 |