J'essaie de télécharger un fichier en cliquant sur un bouton. Ma méthode spécifique est la suivante :
Cette méthode téléchargera le fichier, mais elle continuera à télécharger le fichier indéfiniment, je ne sais pas pourquoi cela se produit et je n'ai aucune idée de comment résoudre ce problème.
C'est ainsi que j'appelle cette fonction.
Voici le code de la fonction :
getImage: async function(info, event){ fetch('endpoint' + String(info[0]) + "/" + String(info[1]) , { method: 'GET', }) .then(response => response.json()) .then(async result => { var image_data = await result.image_buffer.data var imgSrc = "data:image/jpg;base64," + btoa( image_data.reduce((data, byte) => data + String.fromCharCode(byte), '') ); event.target.href = imgSrc event.target.download = 'image.jpg' event.target.click() }) },
Le problème est que vous réutilisez le même élément. Ainsi, l'événement click déclenché à la fin de getImage() déclenche l'écouteur de clic et getsImage() est à nouveau appelé, créant une boucle infinie d'appels getImage().
Pour résoudre ce problème, créez un nouvel élément a dans getImage() et utilisez-le comme a "téléchargement" du script.
Par exemple :
const el = document.createElement('a') el.href = imgSrc el.download = 'image.jpg' el.click()