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 二进制
南阳代办公司工商营业执照
南阳代办营业执照工商执照公司
南阳宛城区代办申请工商营业执照
南阳卧龙区代办工商营业执照
南阳个体户营业执照代办
南阳公司工商营业执照代办
南阳代办公司工商营业执照细节流
南阳代办营业执照需要的资料
唐山增值电信业务经营许可证申请
廊坊第二类增值电信业,ICP许可证