解决微信返回码"errcode":40113,"errmsg":"unsupported file type"或 errcode":41005,"errmsg":"media data missing

最近公司需求在后台管理公司的文件素材,要用到新增永久素材,看了下文档,简单粗暴。导致出现大量的40113和41005问题

网上找了很多资料,都说是curl的问题,实际上是数据结构的问题,我使用旧版本的curl上传一点毛病都没有。

我的php版本是7.2,直接上代码

//tmp_name 文件的绝对路径
//type     文件类型
//name     文件名称
$data= ['media'=> new \CURLFile($file->getInfo('tmp_name'), $file->getInfo('type'), $file->getInfo('name'))];


echo self::httpsRequest($this->upload, $data);


    private function httpsRequest($url, $data = null,$time_out=60,$out_level="s",$headers=array())
    {
        $curl = curl_init();
        curl_setopt($curl, CURLOPT_NOSIGNAL, 1);
        curl_setopt($curl, CURLOPT_URL, $url);
        curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);
        curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE);
        if (!empty($data)){
            curl_setopt($curl, CURLOPT_POST, 1);
            curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
        }
        if($out_level=="s")
        {
            //超时以秒设置
            curl_setopt($curl, CURLOPT_TIMEOUT,$time_out);//设置超时时间
        }elseif ($out_level=="ms")
        {
            curl_setopt($curl, CURLOPT_TIMEOUT_MS,$time_out);  //超时毫秒,curl 7.16.2中被加入。从PHP 5.2.3起可使用
        }
        curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
        if($headers)
        {
            curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);//如果有header头 就发送header头信息
        }
        $output = curl_exec($curl);
        curl_close($curl);
        return $output;
    }

data打印出来的数据结构如下

 ["media"] => object(CURLFile)#11 (3) {
    ["name"] => string(53) "C:\Users\Administrator\AppData\Local\Temp\phpBDFD.tmp"
    ["mime"] => string(10) "image/jpeg"
    ["postname"] => string(13) "封面图.jpg"
  }

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值