我的站点中有一个页面,显示了一些由我的 PHP 生成的图像。当我右键单击图像并单击将图像另存为默认名称时,用于生成图像的 php 文件的名称。
这是例如图像的 html :
<img src="picture_generator.php?image_id=5&extension=.png">
我得到的名字是:picture_generator.php.png
有没有办法将此名称设置为默认名称?
提前致谢
我的站点中有一个页面,显示了一些由我的 PHP 生成的图像。当我右键单击图像并单击将图像另存为默认名称时,用于生成图像的 php 文件的名称。
这是例如图像的 html :
<img src="picture_generator.php?image_id=5&extension=.png">
我得到的名字是:picture_generator.php.png
有没有办法将此名称设置为默认名称?
提前致谢
您可以在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。
您可以尝试使用 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。
在您的picture_generator.php 文件中,您需要添加一个带有名称的标题。如
header("Content-Disposition: attachment; filename=\"myfile.png\"");