5

我想通过一个用 C++ 编写的程序发送图片。- 好的,它可以工作,但我想将图片从预加载的载体发送到变量 char(你知道我的意思吗?首先,我将图片加载到变量中,然后发送变量),因为现在我有指定图片在磁盘上的路径。

我想通过使用 curl 库而不是通过 exe 用 C++ 编写这个程序。扩大。我也找到了这样一个程序(已经被我修改了一下)

4

2 回答 2

11

CURLFORM_PTRCONTENTS 这里的用法不正确,它不会创建文件上传部分。

相反,应该使用CURLFORM_BUFFER从内存中已经存在的缓冲区发送图像。

 curl_formadd(&formpost,
          &lastptr,
          CURLFORM_COPYNAME, "send",
          CURLFORM_BUFFER, "nowy.jpg",
          CURLFORM_BUFFERPTR, data,
          CURLFORM_BUFFERLENGTH, size,
          CURLFORM_END);
于 2010-06-11T20:21:05.223 回答
2

阅读文档curl_formaddhttp ://curl.haxx.se/libcurl/c/curl_formadd.html

具体来说,在“选项”下:

CURLFORM_PTRCONTENTS

后面跟着一个指针,指向这部分的内容,实际发送出去的数据。libcurl 将使用指针并引用应用程序中的数据,因此您必须确保它一直存在,直到 curl 不再需要它。如果数据不是以 NUL 结尾的,或者您希望它包含零字节,则必须使用 CURLFORM_CONTENTSLENGTH 设置其长度。

CURLFORM_CONTENTSLENGTH

后跟一个 long 给出内容的长度。请注意,对于 CURLFORM_STREAM 内容,此选项是必需的。

所以而不是

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

你想要类似的东西

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

我假设您知道如何创建p_jpg_data数据并将其读入其中,或者您需要解释吗?

于 2010-03-27T13:17:14.077 回答