wget возвращает загруженное имя файла - PullRequest
3 голосов
/ 23 марта 2010

Я использую wget в php-скрипте и мне нужно получить имя загруженного файла.

Например, если я попытаюсь

<?php
  system('/usr/bin/wget -q --directory-prefix="./downloads/" http://www.google.com/');
?>

, я получу файл с именемindex.html в каталоге загрузок.

РЕДАКТИРОВАТЬ: хотя страница не всегда будет Google, целью может быть изображение или таблица стилей, поэтому мне нужно узнать имя файла, который был загружен.

Я бы хотел что-то вроде этого:

<?php
  //Does not work:
  $filename = system('/usr/bin/wget -q --directory-prefix="./downloads/" http://www.google.com/');
  //$filename should contain "index.html"
?>

Ответы [ 4 ]

3 голосов
/ 23 марта 2010

Может быть, это какой-то обман , но почему бы и нет:

  • определите себе имя файла, который wget должен создать
  • , чтобы указатьwget что загрузка должна быть произведена в этот файл
  • по окончании загрузки, используйте этот файл - как вы уже знаете имя.

Проверьте -O option of wget; -)


Например, запустив это из командной строки:

wget 'http://www.google.com/' -O my-output-file.html

Создаст файл с именем my-output-file.html.

1 голос
/ 23 марта 2010

если ваше требование простое, например, получение google.com, то сделайте это в PHP

$data=file_get_contents('http://www.google.com/');
file_put_contents($data,"./downloads/output.html");
0 голосов
/ 06 мая 2011

Я использовал 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
?>
0 голосов
/ 23 марта 2010

В Linux-подобных системах вы можете сделать:

system('/usr/bin/wget -q --directory-prefix="./downloads/" http://www.google.com/');
$filename = system('ls -tr ./downloads'); // $filename is now index.html

Это работает, если в каталоге ./downloads нет другого файла, создающего процесс.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...