0
- 我建立了oscobo,隱私搜索引擎的圖片搜索未知。
- 我們使用Bing URL來獲取縮略圖,以便在圖像搜索結果頁面上顯示給用戶。例如:https://oscobo.com/image.php?q=london。
- 我們不想直接將客戶端連接到Bing(如上例所示),但打算使用反向代理腳本,該腳本使用cURL來獲取圖像,然後將其發送回瀏覽器。
- 當我們知道文件類型是什麼(例如jpg)時,我們可以在將圖像回顯給瀏覽器之前相應地爲Header選擇正確的內容類型。
- 我們的問題是,URL到Bing中不包含的文件類型,它沿着http://tse3.mm.bing.net/th?id=OIP.M1a65dd11fb2b159f4fe44eba7dcfa0a6H0&pid=15.1&H=90&W=160
問題
的線條看起來我們怎麼能修改此腳本的URL工作那不顯示文件類型?
任何想法或輸入非常感謝。
頁面上的PHP
$html = '';
$images = $results->bossresponse->images->results;
foreach ($images as $image) {
$theurl = "{$image->thumbnailurl}";
$theurl = base64_encode($theurl);
$reverseurl = "reverseproxy.php?url=$theurl";
$html .= "<a href=\"{$image->clickurl}\"> <img class=border src=\"$reverseurl\" height=\"140px\"></a>";
}
echo $html;
反向腳本reverseproxy.php
<?php
$file = base64_decode(@$_GET['url']);
$aFile = end(explode('.' , $file));
if($aFile == 'jpg' or $aFile == 'jpeg'){
header('Content-Type: image/jpeg');
}elseif($aFile == 'png'){
header('Content-Type: image/png');
}elseif($aFile == 'gif'){
header('Content-Type: image/gif');
}else{
die('not supported');
}
if($file != ''){
$cache_expire = 60*60*24*365;
header("Pragma: public");
header("Cache-Control: maxage=". $cache_expire);
header('Expires: ' . gmdate('D, d M Y H:i:s', time() + $cache_expire).' GMT');
//The cURL stuff...
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "$file");
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_BINARYTRANSFER,1);
$picture = curl_exec($ch);
curl_close($ch);
//Display the image in the browser
echo $picture;
}
exit;
?>
你看了CURLOPT_HEADERFUNCTION讀取HTTP頭文件下載? http://stackoverflow.com/questions/6482068/curl-setoptch-curlopt-headerfunction-arraythis-readheader-not-working – RCrowt