【问题标题】:Forcing browser to open "Save As" dialog on file download强制浏览器在文件下载时打开“另存为”对话框
【发布时间】:2016-05-04 19:22:38
【问题描述】:

我已经阅读了至少 40-50 篇关于此主题的帖子,但没有一个解决方案真正符合我的要求。 我“命令”我的 WinCE 6.0 板通过 AJAX 请求创建一个备份文件,然后我想将此文件保存到本地 WS。

AJAX 请求完成后,我会调用以下 javascript 代码:

function DownloadControllerBackupDB(theResult)
{
   if(typeof(theResult.Filename) != undefined)
   {
      var myFileLocation = '/data/' + theResult.Filename;

      location.href = myFileLocation;
   }
   else
   {
      Error("Backup failed !");
   }
}

我也尝试过这种方法(而不是“location.href”技术):

function SaveToDisk(fileURL, fileName) 
{
    var save = document.createElement('a');

    save.href = fileURL;
    save.target = '_blank';
    save.download = fileName || 'unknown';

    var event = document.createEvent('Event');
    event.initEvent('click', true, true);
    save.dispatchEvent(event);
    (window.URL || window.webkitURL).revokeObjectURL(save.href);
}

Both 'techniques' endup @ chrome 50 中的结果相同,文件确实保存到磁盘中的本地文件夹中,专门用于用户文件下载...

我希望浏览器在将此文件保存到磁盘之前询问我(通过文件请求者),以便我决定将其放在哪里。

我在某处读到,您可以在 chrome(可能还有其他浏览器)中设置一个选项以强制它在保存文件之前询问,但我认为要求用户这样做是不可接受的(由于操作的复杂性)。

在保存链接文件之前是否“强制”浏览器询问?

谢谢

【问题讨论】:

  • 没有。这种行为是由用户和用户单独决定的。
  • 我相信这个问题是answered here,尽管question 本身不一定是重复的。简而言之,浏览器控制文件保存的工作方式,而不是 Web 应用程序。
  • 用户代理(在本例中是您的浏览器)决定如何处理文件。 Chrome 和 Firefox 都有设置让你选择一个特定的文件夹,或者每次都询问。您无法从网页上决定。

标签: javascript html


【解决方案1】:
   let a = document.createElement('a');
   a.href = 'https://www.google.ru/logos/doodles/2016/2016-hockey-world-championship-5085766322487296.2-hp.jpg';
   a.download = true;
   var event = document.createEvent('Event');
   event.initEvent('click', true, true);
   a.dispatchEvent(event)

【讨论】:

  • 是的,这很可能是我上面描述的第二种方法,并给出了相同的结果。无论如何,我还没有找到强制浏览器在保存之前询问位置(而不是直接保存到下载文件夹)。
  • @PhilippeBrodeur:可能为时已晚。我也在寻找相同的解决方案。你有没有机会找到任何解决方案?
  • 不,我没有。看起来 Web 浏览器(客户端)通过让用户选择他想要提示下载文件的任何内容(或不选择)来强制执行安全性。因此,在每个浏览器中,您都必须手动设置它。例如在chrome中:设置->高级设置->下载->复选框'总是询问保存文件的位置'(我是从我的法语用户界面翻译的,所以可能会有一些差异)。
猜你喜欢
  • 1970-01-01
  • 2014-03-23
  • 2010-12-12
  • 1970-01-01
  • 2017-08-15
  • 2021-08-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多