使用“另存为”对话框提示用户保存文件?

9

我目前有这段代码:

function download(filename, text) {
        var pom = document.createElement('a');
        pom.setAttribute('href', 'data:text/plain;charset=utf-8,' + encodeURIComponent(text));
        pom.setAttribute('download', filename);
        pom.click();
}

download('test.html', string);

string包含许多HTML代码,这些代码会被写入一个.html文件中。
上述代码运行很完美: 在按钮点击时,浏览器(Chrome)会自动下载一个包含字符串内容的HTML文件。

现在,我想做的是,不让Chrome自动下载文件,而是打开一个“另存为”对话框,询问用户文件的位置和名称,然后将其下载到该位置。

非常感谢您的快速简短回复。


1
我认为它将始终使用默认行为,因为这是用户所期望的。 - t.niese
在我的情况下,用户应该能够设置要保存的文件的位置和名称... - Abdul Jabbar
如果浏览器没有另行指示,这将自动发生。但是,通过为链接提供不同的mime类型,您可以通过type属性强制执行它。 - CBroe
找不到任何打开另存为对话框的属性... - Abdul Jabbar
您已将浏览器设置为所有文件下载到默认位置。 - WaiKit Kung
2个回答

5

我设置了浏览器自动下载所有文件到默认位置,因此不仅这个文件,而且浏览器中的所有其他文件都直接下载,没有保存提示对话框。将浏览器设置更改为“始终询问下载位置”即可解决问题。


2
唯一的方法是在服务器上设置文件头,如下所示:
<FilesMatch "\.(?i:pdf)$">
   ForceType application/octet-stream
   Header set Content-Disposition attachment
</FilesMatch>

由于它是明显的安全风险,下载属性不再允许您更改文件名或文件类型。

您想要做的是复制右键-另存为对话框,但恐怕目前无法实现。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接