我試圖通過發送特殊的頭文件來下載文件。這樣做,我必須通過我的下載腳本重定向PDF文檔的URL請求。file_get_contents()和stream_get_contents()無法打開流
我在發送之前傳遞一個名爲$ seg3的查詢,它是base64_encode(),然後在嘗試請求文件時傳遞base64_decode()ed和urlencoded()。
我已經採取了看看使用,
if (ini_get('allow_url_fopen') == '1')
{
$data = file_get_contents(urlencode(base64_decode($seg3)));
}
else
{
$fp = fopen(urlencode(base64_decode($seg3)), 'rb');
$data = stream_get_contents($fp);
fclose($fp);
}
但兩者file_get_contents()
和stream_get_content()
失敗:
fopen($URL): failed to open stream: HTTP request failed! HTTP/1.1 404 Not Found
然而,當我轉儲正在發送的網址,我可以複製將其粘貼到我的瀏覽器中並打開文件。
它似乎只發生在文件中有空格時,不管是否使用urlencode()
,都會發生錯誤。
'allow_url_fopen'檢查看起來多餘。 'fopen'和'file_get_contents'都依賴於它。如果禁用了,fopen也會失敗。 – hakre