Делают HEAD
запрос в пакетный файл:
curl -w "%%{filename_effective}" "http://example.com/file.jpg" -I -X HEAD -L -J -O -s
Таким образом, сам запрашиваемый файл не будет загружен, согласно RFC2616:
Метод ГОЛОВА идентичен GET, за исключением что сервер НЕ ДОЛЖЕН возвращать тело сообщения в ответ. (...) Этот метод может использоваться для получения метаинформации о сущности, подразумеваемой запросом, без передачи самого объекта-объекта.
Обратите внимание, что это создаст два файла, тем не менее, хотя и только с данными заголовка curl
. Я понимаю, что ваш основной интерес - это не загрузка (потенциально много и/или больших) файлов, поэтому я думаю, что все должно быть в порядке.
Edit: На последующий вопрос о:
Есть ли действительно никакого способа получить только и только содержание, расположение файла без загрузки вообще ничего?
Похоже, что только curl
, боюсь. Единственный способ, чтобы curl
не выводил файл, - это -o NUL
(Windows), и если вы это сделаете, %{filename_effective}
станет NUL
.
Не работает. Он получил файл, загруженный два раза вместо него, один с именем файла из URL-адреса и именем файла содержимого. – zcalebz
Хотя верно, что создаются два файла (оба содержат часть заголовка ответа), я был бы очень удивлен, увидев, что запрос 'HEAD' загружает что-либо. Вы проверили содержимое файла? – zb226
Я проверил файлы, они на самом деле текстовые файлы, содержащие заголовок, если они открыты с помощью текстового редактора. Не существует ли способа получить только и только имя файла содержимого без загрузки вообще? – zcalebz