我想通过一个用 C++ 编写的程序发送图片。- 好的,它可以工作,但我想将图片从预加载的载体发送到变量 char(你知道我的意思吗?首先,我将图片加载到变量中,然后发送变量),因为现在我有指定图片在磁盘上的路径。
我想通过使用 curl 库而不是通过 exe 用 C++ 编写这个程序。扩大。我也找到了这样一个程序(已经被我修改了一下)
CURLFORM_PTRCONTENTS 这里的用法不正确,它不会创建文件上传部分。
相反,应该使用CURLFORM_BUFFER从内存中已经存在的缓冲区发送图像。
curl_formadd(&formpost,
&lastptr,
CURLFORM_COPYNAME, "send",
CURLFORM_BUFFER, "nowy.jpg",
CURLFORM_BUFFERPTR, data,
CURLFORM_BUFFERLENGTH, size,
CURLFORM_END);
阅读文档curl_formadd
:http ://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
数据并将其读入其中,或者您需要解释吗?