php7 curl上传文件

36 篇文章 2 订阅
31 篇文章 0 订阅

php7使用curl上传文件返回错误码26;代码如下:

    $size    =    filesize($path);//文件大小
    $ch = curl_init($url);
    $cfile = curl_file_create($path);
    if (is_null($post_data)) {
        $data = array('media' => $cfile);
    }else{
        $data = array('media' => $cfile,'description'=>$post_data);
    }
    curl_setopt($ch, CURLOPT_POST,1);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
    curl_setopt($ch, CURLOPT_INFILESIZE,$size);
    curl_setopt($ch, CURLOPT_HEADER, 0); // 显示返回的Header区域内容
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); // 获取的信息以文件流的形式返回
    $info    =    curl_exec($ch);
    if (curl_errno($ch)) {
        var_dump(curl_errno($ch));
        return FALSE;
    }
    curl_close($ch); // 关闭CURL会话
    return $info; // 返回数据

我查看手册后使用过CURLFile函数,但返回的错误依然是26错误码,或者是缺少多媒体问题等

$cfile = new \CURLFile($path,$upload_type,$upload_name);
解决方法:


2


php版本

  • <=5.4 curl上传文件只支持@语法

  • = 5.5 支持@语法和CURLFile类

  • 大于=5.6 只支持CURLFile类

// 兼容性写法参考示例

        $curl = curl_init();
        
        if (class_exists('\CURLFile')) {// 这里用特性检测判断php版本
            curl_setopt($curl, CURLOPT_SAFE_UPLOAD, true);
               $data = array('file' => new \CURLFile(realpath($source)));//>=5.5
        } else {
            if (defined('CURLOPT_SAFE_UPLOAD')) {
                curl_setopt($curl, CURLOPT_SAFE_UPLOAD, false);
            }
            $data = array('file' => '@' . realpath($source));//<=5.5
        }
        
        curl_setopt($curl, CURLOPT_URL, $url);
        curl_setopt($curl, CURLOPT_POST, 1 );
        curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
        curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
        curl_setopt($curl, CURLOPT_USERAGENT,"TEST");
        $result = curl_exec($curl);
        $error = curl_error($curl);
        
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
使用curl可以方便地进行文件的上传和下载操作。对于文件上传,可以使用curl命令的--form选项,将需要上传的文件通过POST请求发送到目标地址。例如,可以使用以下命令上传文件filename.txt到hostname的resource路径下: curl --form "fileupload=@filename.txt" http://hostname/resource 对于文件的下载,可以使用curl命令的-O选项,直接下载文件到当前目录下。例如,可以使用以下命令下载地址为http://www.gnu.org/software/gettext/manual/gettext.html的文件: curl -O http://www.gnu.org/software/gettext/manual/gettext.html 如果需要对大文件进行下载,并且希望能够实现断点续传的功能,可以使用curl命令的-C选项。通过添加-C选项,已经下载过的文件不会被重新下载,而是继续下载。例如,可以使用以下命令实现对同一文件的续传: curl -C - -O http://www.gnu.org/software/gettext/manual/gettext.html 此外,还可以使用--limit-rate选项对curl的最大网络使用进行限制,以限制下载或上传文件时的网络速度。可以通过设置限制速度的值来控制网络使用的带宽。例如,可以使用以下命令限制curl的下载速度为100KB/s: curl --limit-rate 100k http://www.example.com/file 在PHP中,也可以使用CURL库来实现文件的上传和下载功能。可以通过发送POST请求来上传文件,设置某个字段为需要上传的文件的全路径,并以"@"开头。然后使用CURL库将请求发送出去。具体的实现可以参考PHP文档中关于CURL上传文件的相关内容。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [curl命令上传下载文件](https://blog.csdn.net/wulong710/article/details/53127606)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *3* [PHP实现通过CURL上传文件功能示例](https://download.csdn.net/download/weixin_38582685/14910324)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值