How to force Chrome to NOT open SaveAs Dialog when downloading a URL? How to force Chrome to NOT open SaveAs Dialog when downloading a URL? google-chrome google-chrome

How to force Chrome to NOT open SaveAs Dialog when downloading a URL?


It is impossible when "Ask where to save each file before downloading" Enabled (as of 70.0.3538.77). The corresponding Chromium bug is:

Bug 417112: chrome.downloads.download ignore saveAs

Moreover setting filename in chrome.downloads.downloads() also doesn't work.

Bug 758094: Extension can not rename downloaded file


Edit : I've added complete sample code for multiple file downloads which doesn't show SaveAs Dialog.

You can achieve this by using chrome.downloads API.

manifest.json

{  "description": "Multiple file downloads without showing SaveAs Dialog",  "background": {     "scripts": [ "background.js" ],     "persistent" : true  },  "content_scripts": [{     "js": [ "content_script.js"],     "matches": [ "<all_urls>" ],     "run_at": "document_start"  }],  "manifest_version": 2,  "name": "MultipleFileDownloads",  "permissions": [ "downloads" ],  "short_name": "MFD",  "version": "0.0.0.1"}

content_script.js

var DOWNLOAD_LIMIT = 100;function downloadURL(url, filename, callback){    chrome.runtime.sendMessage({        download_url : url,        filename : filename    },function(){        if(typeof callback == 'function'){            callback();        }    })}function simulateFileDownload(i){    if(i > DOWNLOAD_LIMIT){        document.getElementById('download_btn').disabled = false;        return false;    }    var blob = new Blob(['This is sample file '+i], {type:'text/plain'});    var url = URL.createObjectURL(blob);    downloadURL(url,'Sample-'+i+'.txt',function(){        URL.revokeObjectURL(url);        i++;        simulateFileDownload(i);    })}window.onload = function(){    var btn = document.createElement('button');    btn.id = 'download_btn';    btn.style.cssText = 'position:fixed;top:10px;left:10px;width:140px;height:30px;z-index:1000000;';    btn.textContent = 'Download Files';    document.body.appendChild(btn);    btn.addEventListener('click',function(){        this.disabled = true;        simulateFileDownload(0);    })}

background.js

chrome.runtime.onMessage.addListener(function(message, sender, sendResponse){    if(message.download_url){        chrome.downloads.download({            url : message.download_url,            filename : message.filename,            saveAs : false        })    }});