强制浏览器打开“;另存为“;对话框

Forcing browser to open "Save As" dialog on file download

本文关键字:对话框 另存为 浏览器      更新时间:2023-09-26

我已经阅读了至少40-50篇关于这个主题的文章,但没有一个解决方案能真正达到我的目的。我"命令"我的WinCE 6.0板通过AJAX请求创建一个备份文件,然后我想把这个文件保存到本地WS-

我有以下javascript代码,一旦AJAX请求完成就会调用:

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);
}

这两个"techniques"endup@在chrome50中的结果相同,该文件确实保存到了专用于用户文件下载的本地文件夹中的磁盘中。。。

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

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

在保存链接文件之前,是否可以"强制"浏览器询问?

Thanxs

   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)