curl上传文件

在写上传文件的后台接口时,本来是想用postman测试的,不知道为什么,测试一直失败,上传的数据格式老是不对。后来想到,用curl来试试,好像还真成。

curl -F "key=value" -F "filename=@file.tar.gz" http://localhost/upload

如果使用了-F参数,curl会以multipart/form-data的方式发送POST请求。-F以key=value的形式指定要上传的参数,如果是文件,则需要使用key=@file的形式。

如果使用-d命令,curl会以application/x-www-url-encoded格式上传参数。

curl -d "action=del" -d "id=12" http://localhost/test

如果要以json格式上传参数,需要使用-H在命令中指定。

curl -H "Content-Type: application/json" -X POST -d '{"username":"xyz","password":"xyz"}' http://localhost/api/login
在C语言中,使用`curl`库上传文件通常需要创建一个HTTP POST请求,并附带文件数据。下面是一个简单的示例,展示如何使用`libcurl`上传文件: ```c #include <curl/curl.h> size_t write_data(void *ptr, size_t size, size_t nmemb, FILE *stream) { return fwrite(ptr, size, nmemb, stream); } int main() { CURL *curl; CURLcode res; FILE *file = fopen("path_to_your_file", "rb"); // 替换为你要上传的文件路径 if (file == NULL) { fprintf(stderr, "Failed to open file.\n"); exit(1); } curl_global_init(CURL_GLOBAL_DEFAULT); // 初始化curl curl = curl_easy_init(); // 创建一个cURL会话 if (!curl) { fprintf(stderr, "curl_easy_init() failed\n"); fclose(file); curl_global_cleanup(); return -1; } struct curl_httppost *formpost = NULL; struct curl_httppost *lastptr = NULL; // 创建一个POST表单,包括文件部分 formpost = curl_formadd(&formpost, &lastptr, CFORM_COPYNAME, "file", CFORM_FILE, "path_to_your_file", // 替换为文件名 CFORM_END); curl_easy_setopt(curl, CURLOPT_URL, "http://example.com/upload"); // 要上传到的服务器地址 curl_easy_setopt(curl, CURLOPT_HTTPPOST, formpost); // 设置POST数据 curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write_data); // 指定处理上传数据的方式 curl_easy_setopt(curl, CURLOPT_WRITEDATA, stdout); // 将响应输出到控制台 res = curl_easy_perform(curl); // 执行请求 if (res != CURLE_OK) { fprintf(stderr, "curl_easy_perform() failed: %s\n", curl_easy_strerror(res)); } curl_formfree(formpost); // 清理POST表单 fclose(file); curl_easy_cleanup(curl); // 关闭cURL会话 curl_global_cleanup(); // 清理全局资源 return res == CURLE_OK ? 0 : 1; // 如果成功返回0,失败则返回错误码 } ``` 请注意,这个例子假设服务器支持通过HTTP POST上传文件。你需要将`"http://example.com/upload"`替换为你实际的目标URL。此外,`"path_to_your_file"`也要替换为你要上传的实际文件路径。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值