form方式でHttpサーバに画像のコード例を提出します。
1862 ワード
#include <string>
#include <curl/curl.h>
/*
Title: form Http
Environment:
[1]VS2010SP1
[2]libcurl 7.36
[1]《cURL / libcurl / API / Examples / postit2.c》
http://curl.haxx.se/libcurl/c/postit2.html
<form method="post" action="http://172.16.1.155:82/upload/posShowImg" enctype="multipart/form-data">
<input type="file" name="photo" id="add_newsImgFile"/>
</form>
action photo 。
:
UploadImage("http://172.16.1.155:82/upload/posShowImg","d:\\ .jpg",
"http://172.16.1.155:82/upload/posShowImg",outData);
*/
size_t write_callback( void *ptr, size_t size, size_t nmemb, void *outBuffer )
{
int len = size * nmemb;
char *temp = new char[len+1];
memcpy(temp,ptr,len);
temp[len]=0;
reinterpret_cast<std::string *>(outBuffer)->append(temp);
delete temp;
return len;
}
int UploadImage(char* pPostURL, char* pImageFileName, char* pAction, std::string &strOutData)
{
CURL *curl;
CURLcode res;
curl = curl_easy_init();
strOutData="";
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write_callback);//write_data
curl_easy_setopt(curl, CURLOPT_WRITEDATA, &strOutData);
struct curl_httppost *formpost = 0;
struct curl_httppost *lastptr = 0;
curl_formadd(&formpost, &lastptr, CURLFORM_PTRNAME, "photo", CURLFORM_FILE, pImageFileName,CURLFORM_CONTENTTYPE, "image/jpeg", CURLFORM_END);
curl_formadd(&formpost, &lastptr,CURLFORM_COPYNAME, "action",CURLFORM_COPYCONTENTS, pAction,CURLFORM_END);
curl_easy_setopt(curl, CURLOPT_URL, pPostURL);
curl_easy_setopt(curl, CURLOPT_HTTPPOST, formpost);
res = curl_easy_perform(curl);
curl_easy_cleanup(curl);
curl_formfree(formpost);
return res;
}