我想在用户右键单击时更改另存为对话框文件名

Posted

技术标签:

【中文标题】我想在用户右键单击时更改另存为对话框文件名【英文标题】:i want to change the save as dialog filename when the user right clicks 【发布时间】:2013-07-02 09:51:30 【问题描述】:

我在我的项目中使用 phpjavascript/jQuery。当用户右键单击图像并选择另存为时,我想更改另存为对话框的文件名。 (例如,我想将每个“保存对话框”文件名命名为“image.png”)。提前致谢。

【问题讨论】:

右键菜单和默认文件名由浏览器控制,你不能对它们有任何影响(当然除了改变URL中的文件名)。 谢谢。我会试着想一个不同的方法。 @Jon 我很确定你可以阻止鼠标点击的默认行为并做你自己的事情 @slash197:你可以,但这是可怕的做法,我会假装它不存在。别管网络了! ;-) 说真的,取消浏览器的菜单并在 JS 中显示你自己的菜单并不能解决这个问题。 【参考方案1】:

浏览器在保存对话框中提供的文件名可以更改,但不能在 Javascript 中更改。通常这是在您不提供图像的直接链接时完成的,而是使用 PHP 脚本,例如

为此,您只需在 image.php 中发送正确的 http 标头,例如:

header('Content-type: image/jpg');
header('Content-Disposition: inline; filename="' . $filename . '"');

如果您使用非 ASCII 文件名,则需要对其进行编码,不幸的是,不同浏览器的编码不同:

对于 IE 使用 rawurlencode($filename) 对于 FF,使用带有字符集规范的 base64,例如 '=?UTF-8?B?'.base64_encode($filename).'?='

如果您在 Content-Disposition 标头中指定“附件”而不是“内联”,浏览器将不会尝试显示图像,而是会立即提示用户下载。

【讨论】:

以上是关于我想在用户右键单击时更改另存为对话框文件名的主要内容,如果未能解决你的问题,请参考以下文章

打印时更改 PDF 文件名 - 另存为操作

返回“另存为”对话框 powerbuilder

PHP 生成 XML 文件以在另存为对话框中加载正确的文件类型

如何使用另存为对话框将创建的 excel 实例保存到客户端的磁盘

HTA 中的另存为...对话框

不考虑另存为文件类型的另存为通用文件对话框