我不明白的是什麼,我寫了一個腳本來檢查它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