问题 使用jQuery / Javascript打开“保存图像”对话框?


当用户点击网页上的图像时,我想触发浏览器的“保存图像”对话框并让用户将图像保存在硬盘上。使用jQuery / Javascript是否有跨浏览器方式?


1297
2017-12-30 03:44


起源



答案:


不准确,但您可以通过超链接到img文件并在服务器响应中设置content-type和content-disposition标头来实现。尝试,例如,application / x-download, 加上这里指定的其他标题


11
2017-12-30 04:10



正如克雷格所说,只需用超链接包装图像,指向要下载的文件(带有相应的标题集)。 - scunliffe
很好的澄清;我会把它添加到答案中。 - Craig Stuntz
我从未听说过application / x-download,但我听说过application / octet-stream。 - Powerlord
从TFA:“[...]到非标准值,例如应用程序/ x-download。这个标题是浏览器无法识别的东西非常重要,因为浏览器在识别内容类型时经常尝试做一些特殊的事情。” - Craig Stuntz


答案:


不准确,但您可以通过超链接到img文件并在服务器响应中设置content-type和content-disposition标头来实现。尝试,例如,application / x-download, 加上这里指定的其他标题


11
2017-12-30 04:10



正如克雷格所说,只需用超链接包装图像,指向要下载的文件(带有相应的标题集)。 - scunliffe
很好的澄清;我会把它添加到答案中。 - Craig Stuntz
我从未听说过application / x-download,但我听说过application / octet-stream。 - Powerlord
从TFA:“[...]到非标准值,例如应用程序/ x-download。这个标题是浏览器无法识别的东西非常重要,因为浏览器在识别内容类型时经常尝试做一些特殊的事情。” - Craig Stuntz


我想到的唯一的事情是Internet Explorer的document.execCommand(“SaveAs”),你可以打开一个窗口或使用隐藏的iframe和你的图像的网址,然后调用它...

检查(当然是IE) 这个例子 我已经搞定了。


2
2017-12-30 04:17





我不这么认为 - 很多基本的浏览器功能(例如:打印预览)不适用于Javascript。


0
2017-12-30 03:52





谷歌网上商店
Github上

如果这里的任何人仍然感兴趣,我做了一个像这样做的扩展。 它使用XMLHTTPRequest来获取对象,在这种情况下,它被假定为一个图像,然后为它创建一个ObjectURL,一个指向该ObjectUrl的链接,并点击虚构链接。

在您的情况下,您可以将ondragend更改为onclick并有选择地将其添加到图像。


0
2017-08-10 04:24



我尝试了扩展程序,它在Chrome 28.0.1中无效。 - givanse


当你点击你的图像时,你可以创建一个隐藏的文件输入字段并触发()这个字段:

$('.yourImageClass').click(function(){
 $('.hiddenInputClass').trigger('click');
})

0
2017-09-11 12:19