程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 編程綜合問答 >> 服務器-libcurl Post 方法上傳文件求助!

服務器-libcurl Post 方法上傳文件求助!

編輯:編程綜合問答
libcurl Post 方法上傳文件求助!

Hi,
我在我的虛擬機上編譯好了libcurl庫,然後參照列程寫了個簡單的http post上傳文件。
在構建form表單的時候,如果把參數設置為CURLFORM_FILE 並輸入對應的文件名,可以再服務器(HFS)指定的文件路徑下看到我上傳的文件。
但我要使用libcurl的平台沒有文件系統,所以就打算用CURLFORM_BUFFER參數來設置數據區。結果這個能夠上傳,可是不能再文件路徑下看到這個文件。
HFS的上傳權限打開了的。
對比兩種方式的wireshark包,發現在Content-Disposition這個請求頭後面的filename沒指定。
於是用curl_slist_append卻手動設定這個值為我想要的任意名稱,問題又來了,正常的流程中,filename這個參數
是添加在MIME Multipart Media後面的。但手動添加的curl_list卻在Hypertext Transfer Procotol後面。這下查找了好久的資料也沒看到怎麼處理,網上各位大神弄的都是一個文件上傳到另一個文件的方式。
請問誰有經驗,麻煩解惑,謝謝!
上傳測試源代碼和兩個wireshark截圖 success.bmp(直接傳入file方式,可以創建文件的截圖)fail.bmp(用緩沖區地址作為數據輸入,不可以創建制定的文件) main.c 測試程序
沒看到哪兒上傳附件,我發個鏈接,謝謝!http://pan.baidu.com/s/1ntAc6ql

最佳回答:


哦,是我的curl_formadd沒寫好,添加CURLFORM_BUFFER來指定文件名就可以了。 if(curl_formadd(&post, &last,
CURLFORM_COPYNAME, "sourcedata",
CURLFORM_BUFFER, "test.bmp" ,
CURLFORM_BUFFERPTR, imageData ,
CURLFORM_BUFFERLENGTH, 102400,
CURLFORM_END) != 0)
{
fprintf(stderr, "curl_formadd2 error.\n");
goto out;
}

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved