views:

275

answers:

2

Hi!

I would like to send pictures via a program written in C + +. - OK It works, but I would like to send the pictures from pre-loaded carrier to a variable char (you know what I mean? First off, I load the pictures into a variable and then send the variable), cause now I have to specify the path of the picture on a disk.

I wanted to write this program in c++ by using the curl library, not through exe. extension. I have also found such a program (which has been modified by me a bit)

+1  A: 

Read the documentation for curl_formadd: http://curl.haxx.se/libcurl/c/curl_formadd.html

Specifically, under "Options":

CURLFORM_PTRCONTENTS

followed by a pointer to the contents of this part, the actual data to send away. libcurl will use the pointer and refer to the data in your application, so you must make sure it remains until curl no longer needs it. If the data isn't NUL-terminated, or if you'd like it to contain zero bytes, you must set its length with CURLFORM_CONTENTSLENGTH.

CURLFORM_CONTENTSLENGTH

followed by a long giving the length of the contents. Note that for CURLFORM_STREAM contents, this option is mandatory.

So instead of

 curl_formadd(&formpost,
              &lastptr,
              CURLFORM_COPYNAME, "send",
              CURLFORM_FILE, "nowy.jpg",
              CURLFORM_END);

You'd want something like

 curl_formadd(&formpost,
              &lastptr,
              CURLFORM_COPYNAME, "send",
              CURLFORM_PTRCONTENTS, p_jpg_data,
              CURLFORM_CONTENTSLENGTH, jpg_data_len,
              CURLFORM_END);

I'm assuming you know how to create p_jpg_data and read the data into it, or do you need that explained?

Tyler McHenry
I do not know how to write an excuse.can you do?
What are you asking for? *(look up excuse in a dictionary)*
Georg Fritzsche
+2  A: 

CURLFORM_PTRCONTENTS is not the correct usage here, it will not create a file upload part.

Instead one should use CURLFORM_BUFFER to send an image from an already existing buffer in memory.

 curl_formadd(&formpost,
          &lastptr,
          CURLFORM_COPYNAME, "send",
          CURLFORM_BUFFER, "nowy.jpg",
          CURLFORM_BUFFERPTR, data,
          CURLFORM_BUFFERLENGTH, size,
          CURLFORM_END);
Ola Herrdahl