2014-10-10 2 views
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); 
+0

하고, 그것을 초기화 : 당신은 char* 값을 전달하기 위해 std::string::c_str() 방법을 사용할 수 있습니까? 아니면'CURLFORM_FILE'을 지원하지 않는 이전 버전의 컬을 사용하고 있습니까? –

+0

또한 curl_easy_init()가 실패하면'formpost'가 누출됩니다. –

+0

brush_image의 타입은 std :: string입니다. 이전에 초기화되었고 값이 있습니다. 디버거에서 확인했습니다. – aviran

답변

2

내 코드입니다 bles to curl_formadd(). std::string의 개념이없고 char* 만 있습니다.

curl_formadd(&formpost, &lastptr, CURLFORM_COPYNAME, "brush", CURLFORM_FILE, brush_image.c_str(), CURLFORM_END); 
curl_formadd(&formpost, &lastptr, CURLFORM_COPYNAME, "lines", CURLFORM_FILE, lines_image.c_str(), CURLFORM_END); 
curl_formadd(&formpost, &lastptr, CURLFORM_COPYNAME, "downsample", CURLFORM_FILE, downsample_image.c_str(), CURLFORM_END); 
`로 선언 brush_image` 무엇
관련 문제