我的网站上有一个页面,显示图像。当我右键单击图像并单击Save Image As
时,我将获得默认名称。我想在右键单击时更改图像名称并保存。
这是例如:
在我的HTML代码中,我有
image src="abc.jpeg"
当我右键单击时,我希望此图像保存为def.jpg
。
有办法做到这一点吗?
答案 0 :(得分:1)
据我所知,你不能用JavaScript做到这一点。这只能在服务器端处理。
如果您使用的是PHP,一个简单的解决方案就是使用header()。
// It will be called downloaded.pdf
header('Content-Disposition: attachment; filename="downloaded.pdf"');
您当然可以用变量替换download.pdf。
header('Content-Disposition: attachment; filename="' . $fileName .'"');
从PHP文档:
如果您希望系统提示用户保存您要发送的数据, 例如生成的PDF文件,您可以使用»Content-Disposition 标头提供推荐的文件名并强制浏览器 显示保存对话框。
答案 1 :(得分:0)
不要这样做,并不是每个浏览器都支持它(在某些情况下也可以选择退出contextmenu事件)。你为什么要这样做?
我想你想要链接到缩略图的大版本。所以只需在图片标记周围添加一个链接(<a>
),每个人都会感到高兴。当您使用描述性工具提示指示链接时,它会更好。
编辑:
如果页面中已包含图像,则单击[另存为]时,无法更改用户代理将提供的默认标题。点,没有出现。
浏览器可能会使用下载路径中的文件名。您无法动态更改src属性(通过脚本),因为这会导致另一个文件加载。你可以做的是提供包含已经在他们的文件名下的文件的页面,但是要在服务器上完成。
因此选项#2开始(新)文件下载。在Content-Disposition
标头中,您可以动态地(在服务器上)为发送的内容提出任何文件名。要开始下载,只需将图像包装成链接(您甚至可以更改href属性)。或者您可能想要构建一个自定义上下文菜单以将下载链接显示为[另存为]按钮(如何执行此操作将是另一个问题)。
选项#3将在新标签/窗口中打开文件,在其上应用document.execCommand("SaveAs", [...])
并再次关闭标签/窗口。不幸的是,这仅在Internet Explorer中受支持;有关此内容和建议,请参阅Does execCommand SaveAs work in Firefox?。
答案 2 :(得分:0)
嗯有一种方法可以做到这一点..但我不确定它是否适用于大多数浏览器。
在您的正文标记中添加oncontextmenu="return false;"
属性。它将禁用上下文菜单(希望?!)!
如果你想要自定义上下文菜单,那么用小css和脚本来做。附加点击事件的事件处理程序,并在发生左击或右击时执行操作。
答案 3 :(得分:-1)
你把它放在图像
中<img src=".." onClick="this.src='new URL'">
或者您可以在单独的函数中执行此操作
<img src=".." onClick="change(this)">
//
<script>
function change(img) {
img.src = 'new src';
}
</script>