Libcurl 二进制上传文件

CURL* curl = curl_easy_init();
		if (curl){
			struct curl_slist* http_header = NULL;
			http_header = curl_slist_append(http_header, "Expect:");
			http_header = curl_slist_append(http_header, "User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/534.3 (KHTML, like Gecko) Chrome/6.0.472.63 Safari/534.3");
			http_header = curl_slist_append(http_header, "Charset: UTF-8");
			http_header = curl_slist_append(http_header, "Connection: keep-alive");//保持长连接

			struct curl_httppost *post = NULL;
			struct curl_httppost *last = NULL;
			curl_formadd(&post, &last, 
				     CURLFORM_COPYNAME, "file", 
				     CURLFORM_BUFFER, pFileName, 
				     CURLFORM_BUFFERPTR, pFileData,     
				     CURLFORM_BUFFERLENGTH, nFileData, 
				     CURLFORM_CONTENTTYPE, "image/jpeg",
				     CURLFORM_END); 
			//curl_formadd(&post, &last, CURLFORM_COPYNAME, "file", CURLFORM_FILE, pFileName, CURLFORM_END);

			curl_easy_setopt(curl, CURLOPT_HTTPHEADER, http_header);//修改协议头
			curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, http_recv_cb);//设置接收回调
			curl_easy_setopt(curl, CURLOPT_WRITEDATA, (void *)&stRecv);//设置设置参数
			curl_easy_setopt(curl, CURLOPT_CONNECTTIMEOUT, 5);//设置连接时的超时时间为5秒
			curl_easy_setopt(curl, CURLOPT_URL, pUrl);//指定URL
			curl_easy_setopt(curl, CURLOPT_HTTPPOST, post);
			CURLcode res = curl_easy_perform(curl);//执行

			long nRet = 0;
			CURLcode codeRet = curl_easy_getinfo(curl, CURLINFO_RESPONSE_CODE, &nRet);
			if (codeRet == CURLE_OK && nRet == 200){
				bResult = true;
			}
			else{
				char cData[2048] = {0};
				sprintf(cData, "http 错误码:%d", nRet);
				//OutPut(HTTP_LOG, cData);
			}

			curl_slist_free_all(http_header);
			curl_easy_cleanup(curl);
		}

你可能感兴趣的:(libcurl,c++)