Je crée une extension qui téléchargera un fichier mp3 à partir d'un site Web. J'essaie de le faire en créant un nouvel onglet avec le lien vers le fichier mp3, mais Chrome continue de l'ouvrir dans le lecteur au lieu de le télécharger. Existe-t-il un moyen de créer une fenêtre contextuelle pour demander à l'utilisateur d'"enregistrer sous" le fichier ?
Réponses
Trop de publicités?
AmanicA
Points
1996
Il s'agit d'une version légèrement modifiée de la réponse de @Steve Mc qui en fait simplement une fonction généralisée qui peut facilement être copiée et utilisée telle quelle :
function exportInputs() {
downloadFileFromText('inputs.ini','dummy content!!')
}
function downloadFileFromText(filename, content) {
var a = document.createElement('a');
var blob = new Blob([ content ], {type : "text/plain;charset=UTF-8"});
a.href = window.URL.createObjectURL(blob);
a.download = filename;
a.style.display = 'none';
document.body.appendChild(a);
a.click(); //this is probably the key - simulating a click on a download link
delete a;// we don't need this anymore
}
Cody
Points
996
Voici un moyen concis de télécharger un fichier en utilisant l' autorisation "téléchargements" dans le manifeste Chrome à l'aide de la solution @Xan et @AmanicA
function downloadFile(options) {
if(!options.url) {
var blob = new Blob([ options.content ], {type : "text/plain;charset=UTF-8"});
options.url = window.URL.createObjectURL(blob);
}
chrome.downloads.download({
url: options.url,
filename: options.filename
})
}
// Download file with custom content
downloadFile({
filename: "foo.txt",
content: "bar"
});
// Download file from external host
downloadFile({
filename: "foo.txt",
url: "http://your.url/to/download"
});