可能重复:
How to change the filename displayed in the “Save as…” dialog from .php to .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
保留在the default of inline
。
答案 0 :(得分:7)
is also supported的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']
?>