Hi all

I am trying libcurl to write something on raspberryPI. I write a simple code to 
attach a file in the POST request. Here I hit a problem with 
'CURLFORM_FILECONTENT' while using curl_formadd() function. Here is the the 
code.


        CURL *curl = NULL;
        CURLcode ret;
        struct curl_httppost *post = NULL;
        struct curl_httppost *last = NULL;


        FILE* tmp_body_file = tmpfile();
        FILE* tmp_header_file = tmpfile();


        curl_formadd(&post, &last, CURLFORM_PTRNAME, "access_token", 
CURLFORM_PTRCONTENTS, access_token, CURLFORM_END);
        curl_formadd(&post, &last, CURLFORM_PTRNAME, "status", 
CURLFORM_PTRCONTENTS, buffer, CURLFORM_END);
        curl_formadd(&post, &last, CURLFORM_PTRNAME, "pic", 
CURLFORM_FILECONTENT, picture_file_name, CURLFORM_END);


        curl = curl_easy_init();
        curl_easy_setopt(curl, CURLOPT_URL, WEIBO_UPLOAD_URL);
        curl_easy_setopt(curl, CURLOPT_POST, 1L);
        curl_easy_setopt(curl, CURLOPT_HTTPPOST, post);
        curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, 0L);
        curl_easy_setopt(curl, CURLOPT_SSL_VERIFYHOST, 0L);
        curl_easy_setopt(curl, CURLOPT_HTTPPOST, post);
        curl_easy_setopt(curl, CURLOPT_WRITEDATA, tmp_body_file);
        curl_easy_setopt(curl, CURLOPT_WRITEHEADER, tmp_header_file);
        curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, NULL);
        ret = curl_easy_perform(curl);
        curl_formfree(post);
        curl_easy_cleanup(curl);


I just want libcurl to read the file content and add it in the post body. 
However the the request doesn't have the file content as expected, and I 
confirmed by doing tcpdump.


While I change the code like this. (only change this line with CURLFORM_FILE 
option, other arguments stay the same)
        curl_formadd(&post, &last, CURLFORM_PTRNAME, "pic", CURLFORM_FILE, 
picture_file_name, CURLFORM_END);


It uses CURLFORM_FILE to add the file as a file upload part, then the I could 
see the file content in the the POST body. So this proves libcurl could read 
the file, and it's not the trouble with the target file, i.e permission or 
somethikng else


I am curious whether it's my wrong usage with CURLFORM_FILECONTENT option, or 
it's caused by other reason? Could anyone help and share the insight?


Thanks a lot!

-------------------------------------------------------------------
List admin: http://cool.haxx.se/list/listinfo/curl-library
Etiquette:  http://curl.haxx.se/mail/etiquette.html

Reply via email to