1
내가 HTTP POST 요청을 만들려고 노력하고있어
는, 나는 두 개의 텍스트 입력과 3 개 개의 파일은CURL - 알 수없는 형태의 옵션
을 업로드 할 필요가내가하려고 할 때 나는, 파일 업로드 얻이 수없는 것
curl_formadd(&formpost, &lastptr, CURLFORM_COPYNAME, "brush", CURLFORM_FILE, brush_image, CURLFORM_END);
함수의 반환 값은 나는 내가 뭘 잘못 파악하지 못할, CURL_FORMADD_UNKNOWN_OPTION
인을 사용하여 폼에 추가, 여기 당신은 std::string
바리 아를 전달하는
CURL *curl;
CURLcode res;
struct curl_httppost *formpost = NULL;
struct curl_httppost *lastptr = NULL;
static const char buf[] = "Expect:";
curl_global_init(CURL_GLOBAL_ALL);
curl_formadd(&formpost,&lastptr,CURLFORM_COPYNAME, "letter", CURLFORM_COPYCONTENTS, "Letter A",CURLFORM_END);
curl_formadd(&formpost, &lastptr, CURLFORM_COPYNAME, "points", CURLFORM_COPYCONTENTS, "a b c", CURLFORM_END);
// these call return the unknown option
curl_formadd(&formpost, &lastptr, CURLFORM_COPYNAME, "brush", CURLFORM_FILE, brush_image, CURLFORM_END);
curl_formadd(&formpost, &lastptr, CURLFORM_COPYNAME, "lines", CURLFORM_FILE, lines_image, CURLFORM_END);
curl_formadd(&formpost, &lastptr, CURLFORM_COPYNAME, "downsample", CURLFORM_FILE, downsample_image, CURLFORM_END);
curl_formadd(&formpost, &lastptr, CURLFORM_COPYNAME, "submit", CURLFORM_COPYCONTENTS, "send", CURLFORM_END);
curl = curl_easy_init();
if (curl) {
curl_easy_setopt(curl, CURLOPT_URL, url);
curl_easy_setopt(curl, CURLOPT_HTTPPOST, formpost);
res = curl_easy_perform(curl);
if (res != CURLE_OK) {
// does not go here...
}
curl_easy_cleanup(curl);
curl_formfree(formpost);
하고, 그것을 초기화 : 당신은
char*
값을 전달하기 위해std::string::c_str()
방법을 사용할 수 있습니까? 아니면'CURLFORM_FILE'을 지원하지 않는 이전 버전의 컬을 사용하고 있습니까? –또한 curl_easy_init()가 실패하면'formpost'가 누출됩니다. –
brush_image의 타입은 std :: string입니다. 이전에 초기화되었고 값이 있습니다. 디버거에서 확인했습니다. – aviran