Я хочу использовать wget
(из сценария php) для загрузки файлов изображений, но не хочу загружать файлы определенного размера.
Могу ли я ограничить размер файла wget
? Если нет, что лучше?
Если вы загружаете сценарии, вы должны рассмотреть возможность использования curl
вместо этого. Wget может анализировать выходные данные и рекурсивно извлекать целые сайты, но у curl есть гораздо больше опций, относящихся к фактической загрузке определенного файла. Вот соответствующая опция на странице руководства:
--max-filesize
Укажите максимальный размер (в байтах) файла для загрузки. Если запрашиваемый файл больше этого значения, передача не начнется, и curl вернется с кодом выхода 63.
ПРИМЕЧАНИЕ. Размер файла не всегда известен до загрузки, и для таких файлов этот параметр не действует, даже если файл передача оказывается больше, чем этот предел.
Стоит учесть, что это работает только для некоторых файлов. Клиент зависит от сервера, чтобы сообщить, насколько большим будет файл, прежде чем он начнет загрузку. Большинство, но, конечно, не все серверы сообщают об этом.
$n
байты:(ulimit -f $(($n/512)); curl --max-filesize $n …)
.curl
будет прервана с ошибкой, если размер файла превысит$n/512
512-байтовые блоки.Если вы хотите использовать wget, вот способ проверить размер файла без загрузки:
где
$URL
, конечно, находится URL файла, который вы хотите скачать.Таким образом, вы можете подготовить свой сценарий на основе результатов. такие как:
для ограничения размера загрузки до 20 МБ.
(код некрасив, только в ознакомительных целях).
источник
Кажется, нет разумного способа установить максимальный размер файла с помощью wget.
источник
ulimit
(см.bash(1)
,setrlimit(2)
) Также будет работатьwget(1)
, хотя это немного жестко.Wget имеет
-Q
--quota
опция, которая ограничивает максимальный объем загрузки, когда задано несколько URL-адресов (рекурсивный или входной список).https://www.gnu.org/software/wget/manual/html_node/Download-Options.html
/programming//a/20318140/4364036
источник