Как установить имя по умолчанию "сохранить изображение как" для изображения, созданного в PHP?
У меня есть страница на моем сайте, отображающая некоторые изображения, которые производятся моим PHP. Когда я щелкаю правой кнопкой мыши на изображении и нажимаю Сохранить изображение как, я получаю в качестве имени по умолчанию имя php-файла, используемого для генерации изображения.
Это, например, HTML для изображения:
<img src="picture_generator.php?image_id=5&extension=.png">
и имя, которое я получаю: picture_generator.php.png
Есть ли способ установить это имя по умолчанию?
заранее спасибо
3 ответа
Вы можете попытаться установить имя файла, используя заголовки HTTP, но не все браузеры это учитывают.
Самый простой трюк - расширить URL-адрес, чтобы последняя часть содержала желаемое имя файла:
<img src="picture_generator.php/desiredfilename.jpg?image_id=5&extension=.png&name=desiredfilename.jpg">
Примечание. Я также добавил имя файла в конец строки запроса (name
на самом деле не имеет значения), так как некоторые браузеры используют эту часть.
В зависимости от конфигурации вашего сервера это сразу же будет работать без какой-либо специальной настройки (без mod_rewrite или чего-либо подобного). Вы можете проверить, работает ли он на вашем сервере, просто добавив/foo
"на любой PHP-URL на вашем сайте. Если вы видите выходные данные вашего PHP, все хорошо. Если вы видите ошибку 404, то конфигурация вашего сервера не может справиться с такими URL-адресами.
Вы можете предоставить это в Content-Disposition
HTTP заголовок:
header('Content-Type: image/png');
header('Content-Disposition: inline; filename="' . $filename . '"');
Однако некоторые браузеры (а именно Internet Explorer) могут игнорировать этот заголовок. Наиболее пуленепробиваемое решение - подделать URL и заставить браузер поверить, что он загружает статический файл, такой как /images/5/foo.png
в то время как фактический путь за кулисами /picture_generator.php?image_id=5&extension=.png
, Это может быть достигнуто некоторыми модулями веб-сервера, такими как Apache mod_rewrite.
В вашем файле picture_generator.php вам нужно добавить заголовок с именем. такие как
header("Content-Disposition: attachment; filename=\"myfile.png\"");