Скачивание файла с PHP. Как получить FILENAME? - PullRequest
1 голос
/ 04 марта 2011

Мне нужно скачать файлы с удаленного сервера с помощью моего PHP-скрипта.Проблема в том, что ссылки, которые я получаю, выглядят как " example.com? Download = 12345 ".Поэтому я хочу сохранить файл с с правильным расширением и (в лучшем случае) сохранить его оригинальное имя файла. Как мне это сделать?Спасибо всем!

Ответы [ 3 ]

7 голосов
/ 04 марта 2011

Заголовок Content-Disposition в ответе HTTP, если он существует, будет содержать имя файла, который другой сервер хочет, чтобы файл имел.

0 голосов
/ 04 марта 2011

Если вы используете curl, заголовок ответа должен возвращать фактическое имя файла.Заголовок для загрузки файлов выглядит так:

'Content-Disposition: attachment; filename="downloaded.pdf"'
0 голосов
/ 04 марта 2011

@ EricLaw (из команды IE) опубликовал подробный анализ этого в IEBlog в ноябре прошлого года.Хотя его статья посвящена IE, основы для большинства браузеров сохраняются:

  • использует заголовок Content-Disposition (самый чистый, соответствует стандарту, позволяет указать имя файла; может сочетаться с любым изследующее)
  • не использовать строку запроса (не всегда практично - но возможно с перезаписью URL)
  • «Добавить фиктивный параметр строки запроса в конце с желаемым расширением» (aнемного хак, но работает)

Однако исходный сервер не обязан делать ничего из этого;наиболее вероятный вариант - заголовок Content-Disposition.Если этого нет, вы вернетесь к квадрату 1 (хотя вы можете угадать тип файла по его содержимому).

...