Forcer le navigateur à télécharger des fichiers image en un clic
Problème :
Les utilisateurs sont souvent confrontés au vous devez télécharger des fichiers image à partir d'un navigateur. Cependant, cliquer sur une image ne l'ouvre généralement que dans le même onglet ou la même fenêtre, contrairement au comportement présenté lors d'un clic sur une feuille Excel, qui invite l'utilisateur à enregistrer le fichier.
Solution :
La mise en œuvre de cette fonctionnalité à l'aide de la programmation côté client implique un processus en deux étapes :
Ajouter l'attribut « télécharger » aux liens :
HTML5 introduit l'attribut « téléchargement », qui peut être ajouté aux balises d'ancrage pointant vers les URL des images. Cet attribut signale aux navigateurs conformes que la ressource liée doit être téléchargée sous forme de fichier.
Gérer l'événement de clic :
Pour empêcher le navigateur action par défaut d'ouverture de l'image dans le même onglet, gérez l'événement 'clic' sur la balise d'ancrage contenant le lien de l'image. Utilisez ce gestionnaire d'événements pour appeler une fonction qui enregistre l'image sur l'ordinateur de l'utilisateur.
Exemple d'implémentation :
Dans le code fourni, un Le gestionnaire d'événements 'click' est attaché au document, qui vérifie si l'élément cliqué est une balise d'ancrage contenant le texte « Image ». Si tel est le cas, il appelle la fonction saveImageAs1, qui :
Comportement de téléchargement de la feuille Excel :
Dans le cas d'un Feuille Excel, le navigateur définit automatiquement l'en-tête « Content-Disposition » sur « pièce jointe », ce qui demande au navigateur d'inviter l'utilisateur à enregistrer le fichier. Vous pouvez obtenir un comportement similaire pour les fichiers image en simulant cet en-tête dans le backend. Cependant, il est important de noter qu'il s'agit d'une implémentation côté serveur et qu'elle ne relève pas uniquement de la programmation côté client.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!