我不明白的是什么,我写了一个脚本来检查它curlopt_binarytranfer究竟意味着什么?
<?php
$image_url = "http://localhost/curl/img1.png";
$ch = curl_init();
$timeout = 0;
curl_setopt ($ch, CURLOPT_URL, $image_url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_BINARYTRANSFER, 1);
$image = curl_exec($ch);
curl_close($ch);
header("Content-type: image/jpeg");
print $image;
?>
在这种情况下,我得到在浏览器 显示的图像,如果我删除行
CURLOPT_RETURNTRANSFER AND
CURLOPT_BINARYTRANSFER
的区别
curl_setopt($ch, CURLOPT_BINARYTRANSFER, 1);
我仍然得到在浏览器中显示的图像。
,现在如果删除
header("Content-type: image/jpeg");
然后的iget二进制数据显示在浏览器(看起来像垃圾)在这两种情况下i是否删除 curl_setopt线($ CH,CURLOPT_BINARYTRANSFER,1); 或我不删除。 那么这个选项CURLOPT_BINARYTRANSFER
做出什么区别?
然后可以CURLOPT_BINARYTRANSFER做出什么样的影响?你能给个例子吗? – lovesh 2011-05-15 09:28:12
我从你的链接中可以理解的是,人们在理解CURLOPT_BINARYTRANSFER时尝试了更多的东西。 – lovesh 2011-05-15 21:16:59
@lovesh,真的。它实际上是PHP需要的,所以它知道如何处理返回的结果。但责任在于卷曲。所以,基本上,PHP正在告诉curl:*无论何时你要获取二进制数据,告诉我所以我不会把它弄糟。但是,PHP凭借自己的智能和复杂性来判断返回的数据是否应该被视为二进制文本或文本随着时间的推移而波动(某些版本引入了使其恶化的错误,并且一些版本改进了它)。所以,对于一些版本,您可以在不使用该选项的情况下获得结果。但为了安全起见,你最好总是警告PHP。 – 2011-05-15 21:32:54