Как установить значение по умолчанию для «Сохранить изображение как» для изображения, сгенерированного в PHP?

У меня есть страница на моем сайте, отображающая некоторые изображения, которые создаются на моем PHP. Когда я щелкните правой кнопкой мыши по изображению и нажмите «Сохранить изображение», поскольку по умолчанию я получаю имя файла php, используемого для создания изображения.

Это, например, html для изображения:

<img src="picture_generator.php?image_id=5&extension=.png"> 

и я получаю следующее: picture_generator.php.png

Есть ли способ установить это имя по умолчанию?

заранее спасибо

Вы можете попытаться установить имя файла, используя заголовки HTTP, но не все браузеры уважают это.

Самый простой трюк состоит в том, чтобы расширить URL-адрес, чтобы последняя часть содержала нужное имя файла:

 <img src="picture_generator.php/desiredfilename.jpg?image_id=5&extension=.png&name=desiredfilename.jpg"> 

Примечание. Я также добавил имя файла в конце строки запроса (это name действительно не имеет значения), поскольку некоторые браузеры используют эту часть.

В зависимости от конфигурации вашего сервера это немедленно будет работать без какой-либо специальной конфигурации (без mod_rewrite или чего-то подобного). Вы можете проверить, работает ли он на вашем сервере, просто добавив « /foo » к любому URL-адресу PHP на вашем сайте. Если вы видите вывод своего PHP, все хорошо. Если вы видите ошибку 404, тогда ваша конфигурация сервера не может обрабатывать такие URL-адреса.

Вы можете указать его в HTTP-заголовке Content-Disposition :

 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 . Это может быть выполнено с помощью некоторых модулей веб-сервера, таких как mod_rewrite от Apache.

В файле picture_generator.php вам нужно добавить заголовок с именем. такие как

 header("Content-Disposition: attachment; filename=\"myfile.png\"");