nov*_*ino 8 php image save-image
我的网站上有一个页面,显示了我的PHP生成的一些图像.当我右键单击图像并单击"保存图像"时,我将默认名称作为用于生成图像的php文件的名称.
这是例如图像的html:
<img src="picture_generator.php?image_id=5&extension=.png">
Run Code Online (Sandbox Code Playgroud)
我得到的名字是:picture_generator.php.png
有没有办法将此名称设置为默认名称?
提前致谢
Álv*_*lez 10
您可以在Content-DispositionHTTP标头中提供它:
header('Content-Type: image/png');
header('Content-Disposition: inline; filename="' . $filename . '"');
Run Code Online (Sandbox Code Playgroud)
但是,某些浏览器(即Internet Explorer)可能会忽略此标头.最防弹的解决方案是伪造 URL并使浏览器相信它正在下载静态文件,就像/images/5/foo.png幕后的实际路径一样/picture_generator.php?image_id=5&extension=.png.这可以通过Apache的mod_rewrite等一些Web服务器模块来完成.
您可以尝试使用 HTTP 标头设置文件名,但并非所有浏览器都遵循这一点。
最简单的技巧是扩展 URL,使最后一部分包含所需的文件名:
<img src="picture_generator.php/desiredfilename.jpg?image_id=5&extension=.png&name=desiredfilename.jpg">
Run Code Online (Sandbox Code Playgroud)
请注意,我还在查询字符串的末尾添加了文件名(这name并不重要),因为某些浏览器使用该部分。
根据您的服务器配置,这将立即工作,无需任何特殊配置(没有 mod_rewrite 或类似的东西)。/foo您只需将“ ”附加到站点上的任何 PHP-URL即可检查它是否在您的服务器上运行。如果您看到 PHP 的输出,则一切都很好。如果您看到 404 错误,则说明您的服务器配置无法处理此类 URL。