我的网站中有一个页面,显示了我的PHP生成的一些图像。当我右键单击图像并单击“保存图像”时,我将获得用于生成图像的php文件的名称作为默认名称。
这是例如图像的html:
<img src="picture_generator.php?image_id=5&extension=.png">
我得到的名字是: picture_generator.php.png
有没有办法将此名称设为默认名称?
提前致谢
答案 0 :(得分:10)
您可以在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
。这可以通过一些Web服务器模块来实现,例如Apache的mod_rewrite。
答案 1 :(得分:4)
您可以尝试使用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。
答案 2 :(得分:1)
在picture_generator.php文件中,您需要添加名称标题。比如
header("Content-Disposition: attachment; filename=\"myfile.png\"");