c++用curl库将文件上传到http服务器
时间: 2023-09-06 13:07:46 浏览: 271
可以使用cURL库实现将文件上传到HTTP服务器。以下是一个简单的示例代码:
```c++
#include <stdio.h>
#include <curl/curl.h>
int main(int argc, char *argv[])
{
CURL *curl;
CURLcode res;
FILE *fp;
struct curl_httppost *formpost = NULL;
struct curl_httppost *lastptr = NULL;
curl_global_init(CURL_GLOBAL_ALL);
/* 上传的文件名 */
char *filename = "test.txt";
/* 上传的目标 URL */
char *url = "http://example.com/upload";
/* 打开文件 */
fp = fopen(filename, "rb");
if (!fp) {
printf("Failed to open file: %s\n", filename);
return 1;
}
/* 初始化curl */
curl = curl_easy_init();
if (!curl) {
printf("Failed to initialize curl\n");
fclose(fp);
return 1;
}
/* 添加要上传的文件 */
curl_formadd(&formpost, &lastptr,
CURLFORM_COPYNAME, "file",
CURLFORM_FILE, filename,
CURLFORM_END);
/* 设置要上传的 URL */
curl_easy_setopt(curl, CURLOPT_URL, url);
/* 设置要上传的 POST 数据 */
curl_easy_setopt(curl, CURLOPT_HTTPPOST, formpost);
/* 执行上传 */
res = curl_easy_perform(curl);
if (res != CURLE_OK) {
printf("Failed to upload file: %s\n", curl_easy_strerror(res));
curl_formfree(formpost);
curl_easy_cleanup(curl);
fclose(fp);
return 1;
}
/* 清理资源 */
curl_formfree(formpost);
curl_easy_cleanup(curl);
fclose(fp);
curl_global_cleanup();
return 0;
}
```
这段代码中,我们使用了`curl_formadd`函数来添加要上传的文件,使用`curl_easy_setopt`函数来设置上传的URL和POST数据,最后使用`curl_easy_perform`函数来执行上传操作。
阅读全文