Mais limité par les navigateurs, dans de nombreux cas, nous ne pouvons donner qu'un lien et laisser les utilisateurs cliquer pour ouvrir -> Enregistrer sous. Tel que le lien suivant :
Lorsque l'utilisateur clique sur ce lien, le navigateur s'ouvrira et affichera le contenu du fichier pointé par le lien. Évidemment, cela ne répond pas à nos besoins. HTML5 ajoute un attribut de téléchargement à la balise a. Tant que cet attribut est présent, lorsque le lien est cliqué, le navigateur n'ouvrira pas le fichier pointé par le lien, mais le téléchargera à la place (actuellement pris en charge uniquement par Chrome, Firefox et). Opéra).
Lors du téléchargement, le nom du lien sera utilisé directement comme nom de fichier, mais il peut être modifié. Ajoutez simplement le nom du fichier souhaité à télécharger, tel que : download="not-a-file.js".
Mais cela ne suffit pas. La méthode ci-dessus ne peut être utilisée que lorsque le fichier est sur le serveur. Que se passe-t-il si vous souhaitez que le navigateur télécharge le contenu généré par js côté navigateur ?
En fait, il existe encore un moyen de le faire. Je pense que beaucoup de gens ont entendu parler du mot DataURI. Le plus courant est le src de l'image, tel que :
aLink.href = "data:text/plain," content;
}
Cependant, cela ne suffit pas. La méthode ci-dessus présente deux inconvénients, qui entraîneront la perte de nombreuses filles paresseuses :
Il faut cliquer à nouveau pour télécharger, ce qui est trop gênant.
Pour résoudre le problème du type de fichier, vous pouvez utiliser la nouvelle API du navigateur (URL.createObjectURL) pour résoudre le problème. URL.createObjectURL est généralement utilisé pour créer des images. DataURI est utilisé ici pour afficher des images. télécharger des fichiers. Laissez le navigateur nous aider à définir le type de fichier.
Maintenant, il nous suffit de créer une ObjectURL avec du contenu et de l'attribuer à aLink pour résoudre le problème de limitation du type de fichier.
Le téléchargement automatique de fichiers est également assez simple. Vous pouvez créer vous-même un événement de clic dans l'interface utilisateur, puis le déclencher automatiquement pour réaliser un téléchargement automatique.
var blob = new Blob([content]);
var evt = document.createEvent("HTMLEvents");
evt.initEvent ("click", false, false);//initEvent sans les deux derniers paramètres signalera une erreur sous FF Merci à Barret Lee pour ses commentaires
aLink.download = fileName;
aLink.href = URL. createObjectURL( blob);
aLink.dispatchEvent(evt);
}
Remarque : actuellement (2014-01), Blob et URL.createObjectURL n'ont plus besoin d'ajouter des préfixes privés dans les navigateurs standard, vous pouvez donc les utiliser en toute confiance ~~ Si vous êtes inquiet, vous pouvez vérifier Puis-je utiliser.