强制浏览器打开"另存为"文件下载对话框

时间:2016-05-04 19:22:39

标签: javascript html

我已经阅读了至少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);
}

两种'技术' endup @在chrome 50中的结果相同,该文件确实保存到专用于用户文件下载的本地文件夹中的磁盘...

我希望浏览器向我(带文件请求者)之前将此文件保存到磁盘,以便我可以决定放置它的位置。

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

无论如何,强迫'保存链接文件之前要询问的浏览器?

Thanxs

1 个答案:

答案 0 :(得分:0)

   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)