在javascript中更改默认图片扩展名

时间:2012-02-21 17:47:04

标签: php javascript javascript-events

我的网站上有一个页面,显示图像。当我右键单击图像并单击Save Image As时,我将获得默认名称。我想在右键单击时更改图像名称并保存。

这是例如:
在我的HTML代码中,我有 image src="abc.jpeg"

当我右键单击时,我希望此图像保存为def.jpg

有办法做到这一点吗?

4 个答案:

答案 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>