Skip to content Skip to sidebar Skip to footer

How To Force Chrome To Not Open Saveas Dialog When Downloading A Url?

Chrome Build: the newest, 33+ A Chrome Extension extracts certain urls from currently viewed site and then downloads a subset of them (quite often hundreds of files). Expected Beha

Solution 1:

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

Solution 2:

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

varDOWNLOAD_LIMIT = 100;

functiondownloadURL(url, filename, callback){
    chrome.runtime.sendMessage({
        download_url : url,
        filename : filename
    },function(){
        if(typeof callback == 'function'){
            callback();
        }
    })
}

functionsimulateFileDownload(i){
    if(i > DOWNLOAD_LIMIT){
        document.getElementById('download_btn').disabled = false;
        returnfalse;
    }
    var blob = newBlob(['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
        })
    }
});

Post a Comment for "How To Force Chrome To Not Open Saveas Dialog When Downloading A Url?"