Извините, если это неясно, но я пытаюсь настроить скрипт, который загружает файл. В настоящее время я могу загрузить файл, щелкнув ссылку вроде этого:
https://www.URL.com/view?downloadFile=AcctItemFiles\1234567890.txt
Я пробовал использовать wget
команда, но это явно не сработало, потому что эта ссылка не является фактическим местоположением файла. Любые идеи о том, как определить фактическое местоположение файла или как загрузить файл с этой ссылкой, были бы полезны.
wget
у него не должно возникнуть проблем с его получением, поскольку он отлично выполняет команду GET для такого URL-адреса. Единственные проблемы, о которых я могу думать, это:
\
- это специальный символ оболочки, и вам нужно будет заключить URL-адрес в кавычки, чтобы оболочка не преобразовывала \1
к 1
. А еще лучше убежать \
персонажи как %5C
view?downloadFile=AcctItemFiles\1234567890.txt
вместо чего-то разумного, как ваш веб-браузер. Либо используйте -O filename
опция, чтобы заставить его записывать все загруженные данные в указанное имя файла, например(интересно ... блок кода не может следовать за маркером)
wget -O 1234567890.txt "http://www.whatever.com/view?downloadFile=AcctItemFiles\1234567890.txt"
Или используйте --content-disposition
параметр, чтобы указать ему сохранить, используя имя файла, предоставленное сервером в заголовке (прочтите и поймите предупреждение о том, что он содержит ошибки и о том, что для этого требуется два запроса. Не используйте это, если целевой сценарий не поддерживает команду HEAD). использовать curl -O -J ...
вместо wget, где -O -J
вместе дают указание прочитать имя выходного файла из заголовка. В документации не сказано, что curl требует двух запросов, но curl недавно была уязвимость из-за доверия к недопустимым именам файлов, поэтому "глючный" все еще может применяться.
Попробуйте использовать curl с флагом '-L' вместо wget.
-L/--location
(HTTP/HTTPS) If the server reports that the requested page has moved to a different location (indicated with a Location: header and a 3XX response code), this option will
make curl redo the request on the new place.
Curl и wget дополняют друг друга.