php curl 二进制


PHP curl是一种在Web开发中经常用到的网络传输工具,而它的二进制使用则更是让人头疼。二进制数据是由0和1组成的一种数据表示方法,通常直接输出会产生数据污染,因此需要转换或者按照一个规则进行处理。Curl也不例外,它的二进制数据的处理也需要我们特殊对待,下面我们来一一讲解。

首先是如何发送二进制数据,我们可以使用Curl中的CURLOPT_POSTFIELDS选项。这个选项的传参要求是一个数组,数组元素的格式是array('key'=>'value'),其中value可以是字符串或者数组(数组内的字符串会被自动合并成一个字符串),而我们需要注意的就是使用字符串时需要使用base64编码进行转换。以下是一个发送二进制数据的示例:

$ch = curl_init();curl_setopt($ch, CURLOPT_URL, $url);curl_setopt($ch, CURLOPT_POST, 1);$data = array('file' =>base64_encode(file_get_contents($filename)));curl_setopt($ch, CURLOPT_POSTFIELDS, $data);curl_exec($ch);curl_close($ch);

在接收二进制数据时也需要一样的处理,例如我们要将服务器返回的图片数据保存到本地,则需要按照以下格式进行处理:

$ch = curl_init();curl_setopt($ch, CURLOPT_URL, $url);curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);$result = curl_exec($ch);$info = curl_getinfo($ch);curl_close($ch);if ($result !== false && $info['http_code'] === 200) {header('Content-Type:'.$info['content_type']);header('Content-Disposition:attachment;filename="image.jpg"');echo base64_decode($result);}

除此之外,curl二进制数据处理还有一个限制就是需要设置头信息,它的作用在于让接收端知道传输的是二进制数据而不是普通字符串数据。以下是一个示例:

$ch = curl_init();curl_setopt($ch, CURLOPT_URL, $url);curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);$headers = array('Content-Type: binary/octet-stream');curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);$result = curl_exec($ch);$info = curl_getinfo($ch);curl_close($ch);if ($result !== false && $info['http_code'] === 200) {header('Content-Type:'.$info['content_type']);header('Content-Disposition:attachment;filename="file.bin"');echo $result;}

以上就是PHP curl二进制数据的处理方法,虽然相对于普通文本数据的处理还稍微麻烦了些,但是只要我们掌握了相应的方法,就能让curl在处理二进制数据时更加得心应手。


上一篇:php curl 传递

下一篇:php curl 信息


php curl 二进制
Copyright © 2002-2019 测速网 https://www.inhv.cn/ 皖ICP备2023010105号 城市 地区 街道
温馨提示:部分文章图片数据来源与网络,仅供参考!版权归原作者所有,如有侵权请联系删除!
热门搜索