IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

FileReader - Récupérer la valeur du base64 en dehors du onLoad


Sujet :

JavaScript

  1. #1
    Membre éprouvé
    Avatar de amoiraud
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2006
    Messages
    606
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2006
    Messages : 606
    Points : 1 057
    Points
    1 057
    Par défaut FileReader - Récupérer la valeur du base64 en dehors du onLoad
    Bonjour à tous,

    Je me retrouve face à un problème tout simple mais que je n'arrive pas à résoudre,
    J'utilise le FileReader() pour récupérer la chaine base64 d'un fichier uploadé, le problème est que je n'arrive pas a sortir cette variable de ma fonction onload :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    const reader = new FileReader();
    let resultFile = '';
    reader.onload = function () {
      resultFile = reader.result;
      const base64str = resultFile.split('base64,');
      const b64file = base64str[1];
    };
    reader.readAsDataURL(file);
    actualFile.file = b64file;
    J'obtiens un message m'indiquant que la variable b64file n'est pas définie, j'ai essayé plusieurs astuces (notamment déclarer une var plus haut pour l'utiliser) mais je ne trouve aucun moyen pour sorir la valeur que j'obtiens dans mon onload (quand je console.log ma variable b64file a la fin du onload j'obtiens bien la valeur).
    Quelqu'un aurait une idée ?

    Merci d'avance


    Les boutons et existent, servez-vous en

  2. #2
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 235
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 235
    Points : 15 532
    Points
    15 532
    Par défaut
    le "onload" est exécuté de façon asynchrone donc pour utiliser le contenu de la variable "base64" vous devez mettre "actualFile.file = ..." dans le onload.

  3. #3
    Membre éprouvé
    Avatar de amoiraud
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2006
    Messages
    606
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2006
    Messages : 606
    Points : 1 057
    Points
    1 057
    Par défaut
    Merci pour la réponse mathieu

    J'ai essayé et j'ai mis 2 alert(actualFile.file), un a la fin du onload et un après
    Le souci est qu'il m'affiche l'alert d'après le onload en 1er, avec un "undefined", puis celui présent dans le onLoad avec la bonne valeur


    Les boutons et existent, servez-vous en

  4. #4
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    16 959
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 16 959
    Points : 44 122
    Points
    44 122
    Par défaut
    Bonjour,
    c'est ce que t'a expliqué mathieu en écrivant
    le "onload" est exécuté de façon asynchrone...

  5. #5
    Membre éprouvé
    Avatar de amoiraud
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2006
    Messages
    606
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2006
    Messages : 606
    Points : 1 057
    Points
    1 057
    Par défaut
    Oui j'ai compris, mais du coup ai-je un moyen pour utiliser la valeur en dehors du onload ?


    Les boutons et existent, servez-vous en

  6. #6
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    16 959
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 16 959
    Points : 44 122
    Points
    44 122
    Par défaut
    Tu peux traiter le résultat dans une fonction callback par exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    reader.onload = function () {
      resultFile = reader.result;
      constbase64str = resultFile.split('base64,');
      constb64file = base64str[1];
      // appel de la fonction de traitement du résultat
      fct_callBack(b64file);
    };

  7. #7
    Membre éprouvé
    Avatar de amoiraud
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2006
    Messages
    606
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2006
    Messages : 606
    Points : 1 057
    Points
    1 057
    Par défaut
    OK je vais tester ça !

    Merci de votre aide


    Les boutons et existent, servez-vous en

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. DBGrid récupérer les valeurs de l'enregistrement courant
    Par bob_sapp dans le forum Bases de données
    Réponses: 5
    Dernier message: 06/09/2014, 07h56
  2. récupérer la valeur du 2ème champ dans un DBLookUpListBox
    Par jakouz dans le forum Bases de données
    Réponses: 3
    Dernier message: 20/07/2004, 16h45
  3. Réponses: 2
    Dernier message: 03/06/2004, 08h32
  4. [Couleur] Récupérer les valeurs R,V,B et L,U,V ?
    Par M4v3rick dans le forum C++Builder
    Réponses: 4
    Dernier message: 25/01/2004, 03h28
  5. récupérer la valeur de sortie d'un thread
    Par jakouz dans le forum Langage
    Réponses: 3
    Dernier message: 31/07/2002, 11h28

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo