Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <curl/curl.h>
- #include <string>
- #include <fstream>
- #include <sstream>
- #include <iostream>
- using namespace std;
- static const char expectHeader[] = "Expect:";
- //static const char jsonHeader[] = "Content-Type:application/json;charset=UTF-8";
- static size_t OnWriteData(void* buffer, size_t size, size_t nmemb, void* lpVoid)
- {
- std::string* str = dynamic_cast<std::string*>((std::string *)lpVoid);
- if (NULL == str || NULL == buffer) {
- return -1;
- }
- char* pData = (char*)buffer;
- str->append(pData, size * nmemb);
- return nmemb;
- }
- int main(){
- ifstream t("./pic/2.jpg"); //reading image from folder "pic"
- stringstream buffer;
- buffer << t.rdbuf();
- string contents(buffer.str());
- t.close();
- cout << "content size:" << contents.size() << endl;
- //CURL* pCurl;
- curl_global_init(CURL_GLOBAL_ALL);
- int ret = 0;
- string url = "10.5.9.203/website/WebFrontend/index.php";
- struct curl_httppost *post = NULL;
- struct curl_httppost *last = NULL;
- //struct curl_slist *headers =NULL;
- string strResponse;
- curl_formadd(
- &post, &last, CURLFORM_COPYNAME, "pic",
- CURLFORM_BUFFER, "2.jpg",
- CURLFORM_BUFFERPTR, contents.c_str(),
- CURLFORM_BUFFERLENGTH, contents.size(),
- CURLFORM_CONTENTTYPE, "multipart/form-data", CURLFORM_END);
- struct curl_slist *plist = NULL;
- plist = curl_slist_append(plist, expectHeader);
- if(NULL == plist)
- {
- cout << "error curl_slist_append";
- return false;
- }
- CURL *curl;
- curl = curl_easy_init();
- curl_easy_setopt(curl, CURLOPT_URL, url.c_str());
- curl_easy_setopt(curl, CURLOPT_HEADER, 0);
- curl_easy_setopt(curl, CURLOPT_HTTPHEADER, plist);
- curl_easy_setopt(curl, CURLOPT_HTTPPOST, post);
- curl_easy_setopt(curl, CURLOPT_READFUNCTION, NULL);
- curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, OnWriteData);
- curl_easy_setopt(curl, CURLOPT_WRITEDATA, (void *)&strResponse);
- curl_easy_setopt(curl, CURLOPT_NOSIGNAL, 1);
- curl_easy_setopt(curl, CURLOPT_CONNECTTIMEOUT_MS, 1000);
- curl_easy_setopt(curl, CURLOPT_TIMEOUT_MS, 1000);
- char errbuf[CURL_ERROR_SIZE];
- errbuf[0] = '