我家有个小月亮 2018-11-03 08:54 采纳率: 100%
浏览 1441
已采纳

php curl传输文件问题,请路过的大神解答

最近项目开发碰上个问题,需要用到curl去掉第三方提供的接口,于是遍封装了一个公用方法:

public function request_post($url, $post_data = array(), $ispost = true) {
        if (empty($url) || empty($post_data)) {
                return false;
        }

        // return $url;
        $o = "";
        foreach ( $post_data as $k => $v ) 
        { 
                $o.= "$k=" . urlencode( $v ). "&" ;
        }
        if($ispost){
                $url=$url;
                //  $post_data = http_build_query($post_data);
        }else{
                $post_data = substr($o,0,-1);
                $url = $url.'?'.$post_data;
        }

        // header("Content-type: text/html; charset=utf-8");
        $ch = curl_init();//初始化curl
        // curl_setopt($ch, CURLOPT_HTTPHEADER, array(
        //     'Content-Type: multipart/form-­data',
        //     'Content-Length: '.strlen($post_data)
        // ));
        curl_setopt($ch, CURLOPT_URL,$url);//抓取指定网页
        // curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
        // curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
        curl_setopt($ch, CURLOPT_HEADER, 0);//设置header
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);//要求结果为字符串且输出到屏幕上
        if($ispost){
                curl_setopt($ch, CURLOPT_POST, 1);//post提交方式
                curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);
        }
        $data = curl_exec($ch);//运行curl
        curl_close($ch);
        return $data;
}

调用第三方接口时,一切正常,但是有一个地方需要用到上传二进制的音频文件,于是将界面获取到的音频文件转成blob格式提交PHP接口,PHP处理代码如下:

 $speech = file_get_contents('php://input', 'r');

 $param = array(
        speech => $speech
);
return Request_curl::request_post($url, $param);

本以为会放回成功的状态,但是现在是这样的:

 {
    "msg": "语音数据错误,应为二进制类型",
    "code": 305
}

请大神帮忙看下问题,感激不尽!

  • 写回答

2条回答 默认 最新

  • 我家有个小月亮 2018-11-07 10:59
    关注

    关于PHP curl传输文件问题的处理,已在博客中发表的处理过程,详见 php curl模仿post/get请求函数封装以及文件上传调用方法

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 Python语言实验
  • ¥15 我每周要在投影仪优酷上自动连续播放112场电影,我每一周遥控操作一次投影仪,并使得电影永远不重复播放,请问怎样操作好呢?有那么多电影看吗?
  • ¥20 电脑重启停留在grub界面,引导出错需修复
  • ¥15 matlab透明图叠加
  • ¥50 基于stm32l4系列 使用blunrg-ms的ble gatt 创建 hid 服务失败
  • ¥150 计算DC/DC变换器平均模型中的参数mu
  • ¥25 C语言代码,大家帮帮我
  • ¥15 请问以下文字内容及对应编码是用了什么加密算法或压缩算法呢?
  • ¥50 关于#html5#的问题:H5页面用户手机返回的时候跳转到指定页面例如(语言-javascript)
  • ¥15 无法使用此凭据登录,因为你的域不可用,如何解决?(标签-Windows)