【问题标题】:Prompting user to save file using a 'Save-as' dialog?提示用户使用“另存为”对话框保存文件?
【发布时间】:2013-11-09 21:13:22
【问题描述】:

我目前有这个代码:

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 不会自动下载文件,而是应该打开一个“另存为”对话框并询问用户文件的位置和名称,然后将其下载到该位置.

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

【问题讨论】:

  • 我认为它将始终使用默认行为,因为这是用户所期望的。
  • 好吧,就我而言,用户应该能够设置要保存的文件的位置和名称...
  • 如果浏览器没有指示他们的浏览器不这样做,这将自动发生。但也许您可以通过链接的 type 属性提供不同的 mime 类型来强制它。
  • 找不到任何此类属性来打开另存为对话框...
  • 您已设置浏览器已将所有文件下载到默认位置

标签: javascript html save-as


【解决方案1】:

我的浏览器被设置为自动下载默认位置的所有文件,这就是为什么不仅这个文件,而且我的浏览器中的所有其他文件都直接下载而没有保存提示对话框。将浏览器中的设置更改为“始终询问下载位置”有效。

【讨论】:

    【解决方案2】:

    这样做的唯一方法是在服务器上设置文件的标题,如下所示:

    <FilesMatch "\.(?i:pdf)$">
       ForceType application/octet-stream
       Header set Content-Disposition attachment
    </FilesMatch>
    

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

    您正在尝试复制右键单击 - 另存为对话框,但恐怕目前不可能。

    【讨论】:

      猜你喜欢
      • 2018-07-07
      • 1970-01-01
      • 2014-12-03
      • 2013-03-29
      • 2013-06-14
      • 2015-11-10
      • 1970-01-01
      • 2014-02-07
      • 1970-01-01
      相关资源
      最近更新 更多