2012-02-05 104 views
-1

是否有一種簡單的方法從使用PHP通過wget下載的文件獲取文件名和擴展名?從wget響應中獲取「文件名」和擴展名

確切的問題是。 我試圖在接受我的Facebook應用程序後訪問用戶的Facebook圖像。

//e.g 
wget http://graph.facebook.com/663660516/picture 

因此,我不知道下載文件的文件名/擴展名。

+2

所以你想知道如何獲取任何文件的名稱和擴展名? – 2012-02-05 20:50:59

+2

您能否向我們提供更多詳細信息?這太模糊了。 – 2012-02-05 20:51:44

+0

從技術上講,你不能。您所能做的只是基於URL或者Content-Disposition標題(如果存在)進行猜測。誰知道遠程服務器上的實際文件名是什麼。 – Brad 2012-02-05 20:52:27

回答

1

使用下面我能夠得到的文件名:

<?php 

ob_start(); 
passthru('wget http://graph.facebook.com/663660516/picture 2>&1'); 
$out = ob_get_contents(); 
ob_end_clean(); 

if (preg_match('/saving to:.{4}([a-z0-9\.-_]*)/i', $out, $match)) { 
    var_dump($match); 
} else { 
    echo "No match"; 
} 

結果:

array(2) { 
    [0]=> 
    string(47) "Saving to: 「275781_663660516_1323021723_q.jpg" 
    [1]=> 
    string(33) "275781_663660516_1323021723_q.jpg" 
} 

$result[1]使用pathinfo()或類似的方法的延伸和名稱,你可以再拿到。

注意:正則表達式中的{4}將消耗文件周圍的特殊引號()wget輸出(至少在我的系統上)。它在PHP中註冊爲3個字節,我無法通過字符代碼來匹配它,所以在我看來這有點破綻。還假定系統語言是英語,因爲它在輸出中查找Saving to:

希望有所幫助。