Reputation: 1312
I'm trying to create an extension which downloads multiple files at once.
In order to accomplish that, I'm using chrome downloads api, here is the code (with AngularJS):
var fileDownloadProperties = function(raw) {
return {
url: "https:" + raw.url,
filename: sharedDir + "/" + raw.name + "pdf",
saveAs: false
}
};
$scope.status = "";
filesToDownload.forEach(function (raw) {
chrome.downloads.download(fileDownloadProperties(raw));
});
The problem is that when the script runs it ignores the saveAs option, and proceed with opening the save as dialog (the name and location are passed correctly, as they are the defaults in the dialog, but could be overwritten).
While it does allow me to download, it's not very useful as I can have over tens of files (and the next save dialog will open only when the previous file finished downloading!).
Is there a way to force chrome to download files silently and simultaneously? I tried other solutions (like the code below), but none seems to avoid the dialog from opening.
var a = document.createElement("a");
a.href = files[0];
a.download = files[0];
a.click();
Any help will be greatly appreciated, thanks.
Upvotes: 8
Views: 2959
Reputation: 5243
The answer provided by Jenna is an acceptable workaround, however, forcing users to change their preferences is not something I will take as an "Accepted solution". There is an issue filed for this bug on this thread.
I guess the only possible way of having a correct fix is for the chrome team to stand up and fix this issue for us developers. I would recommend to put more pressure on the thread by adding a comment indicating why you need this to be fixed and how urgent it is. Also and most important, make sure you click the star to have the issues starred as they will pay more attention to it.
Upvotes: 2
Reputation: 2452
You can instruct your user to set Chrome settings to have
Ask where to save each file before downloading
"Save As" turned on/off.
https://lifehacker.com/make-chrome-ask-where-to-save-downloaded-files-by-chang-1790840372
Upvotes: 5