我在php脚本中使用wget,需要获取已下载文件的名称。
例如,如果我尝试
<?php
system('/usr/bin/wget -q --directory-prefix="./downloads/" http://www.google.com/');
?>
我将在下载目录中获得一个名为index.html的文件。
编辑:页面并不总是谷歌,目标可能是图像或样式表,所以我需要找出下载文件的名称。
我想要这样的事情:
<?php
//Does not work:
$filename = system('/usr/bin/wget -q --directory-prefix="./downloads/" http://www.google.com/');
//$filename should contain "index.html"
?>
答案 0 :(得分:3)
也许这是某种作弊,但为什么不呢:
wget
应创建的文件的名称wget
表明应该下载该文件查看wget的-O
选项; - )
例如,从命令行运行它:
wget 'http://www.google.com/' -O my-output-file.html
将创建一个名为my-output-file.html
的文件。
答案 1 :(得分:1)
如果您的要求很简单,只需获取google.com
,那么在PHP
$data=file_get_contents('http://www.google.com/');
file_put_contents($data,"./downloads/output.html");
答案 2 :(得分:0)
在类似Linux的系统上,你可以这样做:
system('/usr/bin/wget -q --directory-prefix="./downloads/" http://www.google.com/');
$filename = system('ls -tr ./downloads'); // $filename is now index.html
如果./downloads
目录中没有其他进程创建文件,则此方法有效。
答案 3 :(得分:0)
我最终使用php使用以下代码在目录中查找最近更新的文件:
<?php
system('/usr/bin/wget -q --directory-prefix="./downloads/" http://www.google.com/');
$dir = "./downloads";
$newstamp = 0;
$newname = "";
$dc = opendir($dir);
while ($fn = readdir($dc)) {
# Eliminate current directory, parent directory
if (ereg('^\.{1,2}$',$fn)) continue;
$timedat = filemtime("$dir/$fn");
if ($timedat > $newstamp) {
$newstamp = $timedat;
$newname = $fn;
}
}
// $newname contains the name of the most recently updated file
// $newstamp contains the time of the update to $newname
?>