LIBCURL上传文件失败的原因可能是设置了headers中的Content-type导致的

post的参数就传递不过去了,去掉这个代码就可以,这里有什么说法么?

本网通过互联网为用户提供了以下解决方法,供所有碰到类似的朋友参考:

不知道你接收这个请求的是什么方法。如果是用全局变量 $_POST 那么肯定是不行的。

因为,你这里的Content-type 是 application/json ,服务端不会把他当做一个表单请求,也就不会去解析他。

$_POST 中的值是通过识别请求的header中的Content-type,是form-data才会去解析body中的数据,然后放到$_POST里。

还有,你为什么要指定这个Content-type?不妨换个方法。


headers = curl_slist_append(headers, "Content-type:application/x-www-form-urlencoded");//不可用来上传文件


headers = curl_slist_append(headers, "Content-type:multipart/form-data");//可以用来上传文件






  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在C语言,要实现不同content-type的POST请求,你可以使用C库的CGI(公共网关接口)来处理。CGI库提供了处理HTTP请求和响应的功能。你可以通过设置HTTP头部content-type字段来指定不同的content-type。 以下是一个示例代码,展示了如何在C语言实现发送POST请求并设置不同content-type的方法: ```c #include <stdio.h> #include <stdlib.h> #include <string.h> #include <curl/curl.h> int main(void) { CURL *curl; CURLcode res; // 初始化CURL库 curl_global_init(CURL_GLOBAL_ALL); // 创建CURL句柄 curl = curl_easy_init(); if(curl) { // 设置请求的URL curl_easy_setopt(curl, CURLOPT_URL, "http://example.com"); // 设置POST请求 curl_easy_setopt(curl, CURLOPT_POST, 1L); // 设置请求的内容和长度 curl_easy_setopt(curl, CURLOPT_POSTFIELDS, "content=example"); curl_easy_setopt(curl, CURLOPT_POSTFIELDSIZE, strlen("content=example")); // 设置content-type为application/x-www-form-urlencoded struct curl_slist *headers = NULL; headers = curl_slist_append(headers, "Content-Type: application/x-www-form-urlencoded"); curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headers); // 发送请求 res = curl_easy_perform(curl); // 清理 curl_easy_cleanup(curl); } // 清理CURL库 curl_global_cleanup(); return 0; } ``` 在上面的示例代码,我们使用了libcurl库来发送HTTP请求。通过调用curl_easy_setopt函数,我们可以设置POST请求、请求的URL、请求的内容和长度以及请求的content-type。在这个例子,我们设置content-type为application/x-www-form-urlencoded。 这只是一个示例,你可以根据你的需求设置不同的content-type,例如application/json、multipart/form-data等。只需根据需要设置HTTP头部content-type字段即可。 提供了一种封装好的方式,你可以直接使用它来发送不同content-type的POST请求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值