curlopt_binarytranfer到底意味着什么?

lov*_*esh 8 php libcurl

我不明白有什么区别

CURLOPT_RETURNTRANSFER AND
CURLOPT_BINARYTRANSFER
Run Code Online (Sandbox Code Playgroud)

我写了一个脚本来检查它

<?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;
?>
Run Code Online (Sandbox Code Playgroud)

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

curl_setopt($ch, CURLOPT_BINARYTRANSFER, 1);
Run Code Online (Sandbox Code Playgroud)

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

现在,如果我删除该行

header("Content-type: image/jpeg");
Run Code Online (Sandbox Code Playgroud)

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

Sea*_*hey 8

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

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


Maj*_*our 4

对于这种卷曲,我们正在研究两种转移:

  1. 数据从目标主机传输到我们的 PHP 主机
  2. 它从我们的 PHP 主机发送到我们的浏览器。

通过删除,header("Content-type: image/jpeg");您将拒绝浏览器关于如何解释后续内容的线索。CURLOPT_BINARYTRANSFER这与影响第一次传输无关。