curl 上传文件

1)在 php 5.5.0 之前,如果使用 @+文件路径的文件上传文件,具体看这里:http://www.cnblogs.com/tujia/p/5938463.html

2)php 5.5.0 之后已弃用这个方法,想要使用 curl 上传文件,可以使用 curlFile 对象来实现,面向过程化的函数是 curl_file_create

3)写法并没有和普通的 curl 有什么不同,只是把参数中的文件,改成 curFile 就行,完整例子如下:

$parameters['file'] = curl_create_file($file_path);

$ch = curl_init();
curl_setopt( $ch, CURLOPT_URL, $url );
curl_setopt( $ch, CURLOPT_RETURNTRANSFER, 1 );
curl_setopt( $ch, CURLOPT_POST, true );
curl_setopt( $ch, CURLOPT_POSTFIELDS, $parameters );
$response    = curl_exec($ch);
$statusCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);

 

在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"`也要替换为你要上传的实际文件路径。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值