可能重复:
如何将"另存为…"对话框中显示的文件名从.php更改为.png
我的PHP生成的GUI显示动态生成的PNG图像:
<img src="someScript.php?dataId=xyz&width=250&height=200" alt="Chart" />
图像内容是动态的,并且基于dataId
参数是唯一的:
<?php
header('Content-Type: image/png');
// output image based on $_GET['dataId']
?>
但当我的用户尝试在IE、Firefox或Chrome中右键单击并另存为时,建议的文件名是someScript.php.png
。这不是唯一的,也不是很有用。
我怎么能"提示";对于浏览器;另存为";文件名应该是
浏览器总是可以随心所欲,但HTTP的Content-Disposition: attachment; filename=<filename>
开创的先例向我暗示,可能有某种方式可以暗示文件名。这个HTTP头本身是不合适的,因为我希望Content-Disposition
保持在默认的inline
。
Content-Disposition: inline
:也支持filename
参数
[RFC6266]
:4.3。处置参数:"Filename">参数";文件名";以及";文件名*";,要区分大小写匹配,请提供有关如何构造用于存储消息有效载荷的文件名的信息。
根据处理类型,此信息可能会立即使用(在"附件"处理类型引起的"另存为…"交互中(,或稍后使用(例如,当用户决定保存当前显示页面的内容时(
因此:
<?php
$filename = "image_" . $_GET['dataId'] . ".png";
header("Content-Type: image/png");
header("Content-Disposition: inline; filename='"{$filename}'"");
// output image based on $_GET['dataId']
?>