How do I set the default 'save image as' name for an image generated in PHP?

novellino picture novellino · Jun 28, 2011 · Viewed 11.5k times · Source

I have a page in my site, displaying some images that are produced my PHP. When I right click on an image and click Save Image As I get as default name the name of the php file used for generating the image.

This is for example the html for the image :

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

and the name I get is: picture_generator.php.png

Is there a way to set this name to a default one?

Thanks in advance

Answer

&#193;lvaro Gonz&#225;lez picture Álvaro González · Jun 28, 2011

You can provide it in the Content-Disposition HTTP header:

header('Content-Type: image/png');
header('Content-Disposition: inline; filename="' . $filename . '"');

However, some browsers (namely Internet Explorer) are likely to ignore this header. The most bullet-proof solution is to forge the URL and make the browser believe it's downloading a static file like /images/5/foo.png while the actual path behind the scenes is /picture_generator.php?image_id=5&extension=.png. This can be accomplished by some web server modules like Apache's mod_rewrite.