Как получить имя файла, загруженного через wget после перенаправления - PullRequest
0 голосов
/ 19 апреля 2019

В настоящее время я получаю файл, обслуживаемый после перенаправления с параметром --content-disposition, поэтому имя файла - это правильное имя файла (после перенаправления)

Теперь, как я могу получить имя файла для будущего использования в моемсценарий оболочки?

1 Ответ

1 голос
/ 20 апреля 2019

Единственный прямой путь в спецификации HTTP для получения имени файла - заголовок Content-Disposition.При отсутствии этого заголовка клиент обычно выводит имя файла на основе URI запроса.

В случае Wget (при условии, что заголовок Content-Disposition не существует) он сохраняет файл симя, указанное в URI исходного запроса.Например, если вы вызываете Wget с http://example.com/afile, который перенаправляет вас на http://example.com/bfile, то сохраненный файл будет называться afile.Это мера безопасности, предотвращающая перезапись злонамеренным сервером других важных файлов в вашем текущем каталоге, например, вашего .bashrc.

. Это поведение можно отключить с помощью параметра --trust-server-names, в этом случае он будет сохранен.файл с именем bfile.

А затем идет контент-расположение. Если он включен и заголовок существует, он будет использоваться для именования файла.

Все это говорит о том, что окончательное имя файла немного сложно измерить.Самый простой способ - сохранить файл с помощью -O filename, чтобы вы знали точное имя файла.Если вы не хотите этого делать, то самым простым вариантом будет вызвать wget с параметром -nv, который выводит строку, подобную этой:

% wget -nv example.com                                                                                                 
2019-04-20 10:43:48 URL:http://example.com/ [1270/1270] -> "index.html" [1]

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

...