curlopt_binarytranfer到底意味着什么?

时间:2011-05-15 08:36:22

标签: php libcurl

我不明白

之间有什么区别
CURLOPT_RETURNTRANSFER AND
CURLOPT_BINARYTRANSFER

我写了一个脚本来检查它

<?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;
?>

在这种情况下,我得到浏览器中显示的图像 如果我删除该行

curl_setopt($ch, CURLOPT_BINARYTRANSFER, 1);

我仍然可以在浏览器中显示图像。

现在,如果我删除该行

header("Content-type: image/jpeg");

然后iget二进制数据显示在浏览器中(看起来像垃圾)两种情况下我是否删除 curl_setopt($ ch,CURLOPT_BINARYTRANSFER,1); 或者我不删除。 那么这个选项CURLOPT_BINARYTRANSFER会有什么不同?

2 个答案:

答案 0 :(得分:8)

如果我正确理解这个PHP错误报告和解决方案,看起来PHP不再使用CURLOPT_BINARYTRANSFER了。

https://bugs.php.net/bug.php?id=55635

答案 1 :(得分:3)

通过这种卷曲,我们正在寻找两个转移:

  1. 数据从目标主机传输到我们的PHP主机
  2. 它从我们的PHP主机发送到我们的浏览器。
  3. 通过删除header("Content-type: image/jpeg");,您拒绝浏览器了解应如何解释后续内容的线索。这与影响第一次转移的CURLOPT_BINARYTRANSFER无关。