Mettez à jour href et téléchargez le fichier en cliquant sur le bouton.
P粉170438285
P粉170438285 2023-07-20 15:17:03
0
1
417

J'essaie de télécharger un fichier en cliquant sur un bouton. Ma méthode spécifique est la suivante :

  1. En cliquant sur le bouton, j'appelle une API qui renvoie les données mises en mémoire tampon du fichier.
  2. Convertissez les données mises en mémoire tampon en URL base64 et mettez à jour l'attribut href de l'élément
  3. Appelez l'événement click de l'élément

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() }) },


P粉170438285
P粉170438285

répondre à tous (1)
P粉807239416

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()
    Derniers téléchargements
    Plus>
    effets Web
    Code source du site Web
    Matériel du site Web
    Modèle frontal
    À propos de nous Clause de non-responsabilité Sitemap
    Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!