2012-02-05 289 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:

希望有所帮助。