Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/83.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript html5<;下载>;强迫;另存为;对话_Javascript_Html - Fatal编程技术网

Javascript html5<;下载>;强迫;另存为;对话

Javascript html5<;下载>;强迫;另存为;对话,javascript,html,Javascript,Html,改编自帖子: 因为html5的“下载”属性仍然只适用于兼容浏览器。 (根据@RichardParnaby King's) 您可以尝试: var link = document.createElement('a'); link.href = 'images.jpg'; link.download = 'Download.jpg'; document.body.appendChild(link); link.click(); (感谢@DrowsySaturn's) 还值得一提的是,由于它是JS,


改编自帖子:

因为html5的“下载”属性仍然只适用于兼容浏览器。 (根据@RichardParnaby King's)

您可以尝试:

var link = document.createElement('a');
link.href = 'images.jpg';
link.download = 'Download.jpg';
document.body.appendChild(link);
link.click();
(感谢@DrowsySaturn's) 还值得一提的是,由于它是JS,一些较旧的浏览器将不支持此功能

由于每个浏览器都有自己的处理链接的方式,所以通常浏览器的目标是在标记上的URL指定的情况下显示图像,而不是自动下载它们。这是为了纠正,但显然有些浏览器还并没有实现(有些可能永远不会)

PS:首先尝试搜索您的问题,以防止重复

这是一种浏览器(chrome?)功能

您的用户可以根据自己的意愿进行配置


您甚至连FileSaver.js都无能为力……

最可靠的方法是在服务器端强制执行

为方便起见,浏览器将以特定方式自动处理特定内容。特别是,浏览器将通过内联显示图像来自动处理图像,这是您试图避免的

浏览器如何知道它是图像,而不是其他内容。服务器发送一个头来说明这一点。对于png图像,服务器发送如下内容:

//  assuming png
$filename=@_GET['filename'];
$data=file_get_contents($filename);
header("Content-disposition: attachment; filename=$filename");
header('Content-type: image/png');
print $data;
内容类型:image/png

诀窍是让服务器也发送处理内容的首选方法。在您的情况下,您需要如下标题:

//  assuming png
$filename=@_GET['filename'];
$data=file_get_contents($filename);
header("Content-disposition: attachment; filename=$filename");
header('Content-type: image/png');
print $data;
内容配置:附件;文件名=…

这将告诉浏览器下载它

执行此操作的简单PHP脚本如下所示:

//  assuming png
$filename=@_GET['filename'];
$data=file_get_contents($filename);
header("Content-disposition: attachment; filename=$filename");
header('Content-type: image/png');
print $data;
解决者的评论:

这是一个浏览器(chrome?)功能。您的用户可以将其配置为 他希望如此。i、 stack.imgur.com/BvOD8.png甚至FileSaver.js都做不到 关于它的任何事


大多数基于chrome的浏览器(在我的例子中是Opera)在默认情况下都启用了此选项。

嘿,你在标题中拼错了“as”。可能想解决这个问题,如果你不想,可能会有人把你的问题标记出来。@AnishGoyal ty,我有点担心sleepy@JaromandaX看起来解决方案太重,可能是浏览器(chrome?)功能的重复。您的用户可以根据自己的意愿进行配置。甚至连FileSaver.js都无能为力……你试过测试它吗?仍然不运行“另存为”对话框。@Уааааааааааааааа?适用于我(Chrome 57.0.2987.110(64位))。你把一个特定链接是否表示要下载的文件的问题与应用程序是否可以强制“另存为…”对话框(它不能)的问题混淆了。酷,很高兴你解决了这个问题。但是,如果默认情况下启用了该选项,为什么它以前不要求您保存?