我的PHP生成的GUI显示动态生成的PNG图像:
<img src="someScript.php?dataId=xyz&width=250&height=200" alt="Chart" />
Run Code Online (Sandbox Code Playgroud)
根据参数,图像内容是动态且唯一的dataId:
<?php
header('Content-Type: image/png');
// output image based on $_GET['dataId']
?>
Run Code Online (Sandbox Code Playgroud)
但是当我的用户尝试右键单击并在IE,Firefox或Chrome中另存为时,建议的文件名为someScript.php.png.这不是唯一的,也不是很有用.
如何"浏览"浏览器"保存为"文件名应该是什么?
浏览器总是可以做他们喜欢的事情,但是HTTP设置的先例Content-Disposition: attachment; filename=<filename>意味着我可能会有一些暗示文件名的方法.此HTTP标头本身不合适,因为我希望Content-Disposition保持默认值inline.
该filename说法也支持了Content-Disposition: inline:
[RFC6266]:4.3.处理参数:'文件名'参数"filename"和"filename*",不区分大小写,提供有关如何构造用于存储消息有效负载的文件名的信息.
根据处置类型,可以立即使用此信息(在"附加"配置类型导致的"另存为..."交互中),或稍后(例如,当用户决定保存内容时)当前页面正在显示).
所以:
<?php
$filename = "image_" . $_GET['dataId'] . ".png";
header("Content-Type: image/png");
header("Content-Disposition: inline; filename=\"{$filename}\"");
// output image based on $_GET['dataId']
?>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2069 次 |
| 最近记录: |