2012-10-27 171 views
-1

我想弄清楚如何從下載的url中得到實際的文件名。有下載url。請注意,這個網址是直接的沒有重定向。提取下載的網址文件名

http://xyzjsjwekeke.com/download/314543&r=515 

當我點擊以下網址的文件開始下載,其名稱是非常不同的東西像

how_to_prepare_for_interview.pdf 

但在下載網址theere是一點也不像。

我試圖基地extraxt但它給出

$filename = array_shift(explode('?', basename($url))); 
echo $filename; 
+0

究竟是什麼你想在這裏實現 - 你想知道如何發送一個下載到瀏覽器時設置的文件名做? –

+0

@Pekka我想提取實際的文件名,以便我可以將該名稱存儲在我的數據庫中,但像314543&r = 515這樣的文件名是沒有用的,我想在上述情況下存儲實際文件名how_to_prepare_for_interview.pdf – raju

+1

@Payal Malhotra :如果你想這樣做,我想知道是什麼讓你選擇'basename'和'explode'和'array_shift'?通過最好的意圖,我無法想象這將是多麼有意義。你知道這些功能是什麼嗎? – hakre

回答

1

有沒有辦法來從URL中的文件名,不擺在首位的文件名爲URL的斜線後給出的最後一句話輸出。

從您的網址

http://xyzjsjwekeke.com/download/314543&r=515 
              ^----- Probably ID to the file 

這可能需要從URL中的ID,並從一個存儲系統,例如真實。 MySQL,CDN等)發送回它們:

header('Content-disposition: attachment; filename='.$realName); 

獲取這樣的文件名的方式直接來自HTTP頭。獲得使用頁眉get_headers標題信息和提取文件名

$headers = get_headers("http://xyzjsjwekeke.com/download/314543&r=515p",true); 
$headers = array_combine(array_map("strtolower",array_keys($headers)),$headers); 


$fileName = isset($headers['content-disposition']) ? strstr($headers['content-disposition'], "=") : null ; 
$fileName = trim($fileName,"=\"'"); 

var_dump($fileName); 
+2

請不要在網站上增加新的幫助吸血鬼。如果你認爲*是問題,那麼你可以留下重複的鏈接,但即使這樣也可能爲巨魔提供食物。 – hakre

+0

@baba沒有輸出什麼都沒有來 – raju

+0

@PayalMalhotra當回聲時,注意'$ file ** N ** ame'的大小寫。你的原始代碼和這個答案是不同的。 – Boann