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 :

upload d'image et auto submit sous IE


Sujet :

JavaScript

  1. #1
    Membre Expert
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    1 132
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 132
    Par défaut upload d'image et auto submit sous IE
    Bonjour,

    J'essaye de poster automatiquement une image sélectionnée dans un INPUT type=FILE afin de la pré-visualiser dans ma page.

    J'ai donc mis this.form.submit() dans l'évènement onchange du dit INPUT mais InternetExplorer me dit que je n'ai pas le droit (Access denied)

    Avec FF tout va bien...

    Merci d'avance,

    devyan.

  2. #2
    Membre Expert
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    1 132
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 132
    Par défaut
    J'ai avancé un peu dans mes investigations et en fait... Même le bouton Submit me provoque un "Access denied" sous IE

    J'utilise la DTD suivante :<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

    J'ai essayé de ne pas indiquer l'attribut name du formulaire mais rien ne change (à priori normal car je n'utilise pas la DTD xhtml 1)

    J'ai également essayé en utilisant document.getElementById('monBoutonSubmit').click() mais le résultat est le même.

    J'aimerai vraiment comprendre... merci de l'aide que vous pourrez m'apporter.

    devyan.

  3. #3
    Membre Expert
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    1 132
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 132
    Par défaut
    Je viens de voir que le bouton submit du formulaire ne fonctionne pas non plus sous IE

    Voilà un peu de code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <head>
      <script type="text/javascript" language="javascript">
     
      </script>
    </head>
    <html>
      <body>
        <form id="dispatch" name="dispatch" method="post" 
              action="dispatch.php" enctype="multipart/form-data">
          <input type="hidden" name="subactn" id="subactn" value=""/>
          <input type="file" id="uploadimg" name="uploadimg" value="" 
                 onchange="document.getElementById('subactn').value='imgpreview'; document.getElementById('submit').click();" /></br>
           <input type="submit" id="submit" value="Valider" onclick="alert('ici');" />
        </form>
      </body>
    </html>
    Qu'ai-je bien pu faire de travers ?

    devyan


    Au temps pour moi ! j'ai un peu cafouillé entre les différents tests et lpour l'exemple fourni les boutons submit et button avec this.form.submit() fonctionnent par contre this.form.submit() ou monbouton.click() donnent toujours "Accès refusé".

  4. #4
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Billets dans le blog
    20
    Par défaut
    Salut,
    Il n'existe pas de onchange ou onclick sur un input de type file
    En revanche, tu peux tester avec onblur.
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  5. #5
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Par défaut
    Salut,
    Je ne sait pas si c'est cross-browser mais le onchange sur un input de type file marche avec IE6 et FF3.

  6. #6
    Membre Expert
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    1 132
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 132
    Par défaut
    Le onchange est "déclenché" avec IE7 également. Le problème est la restriction d'accès qui semble être liée dans "la pile d'appel de fonctions" lorsque l'on déclenche le submit du formulaire. Toutes les autres actions sont réalisées.

    Je n'arrive vraiment pas à comprendre comment pouvoir faire mon upload automatiquement pour "simuler" une pré-visualisation.

  7. #7
    Membre Expert
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    1 132
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 132
    Par défaut
    Après d'autres tentatives et tests complémentaires voici où j'en suis arrivé :

    * d'après les différentes documentations que j'ai pu trouver l'évènement onChange existe bien pour un Input type FILE et est déclenché correctement (une fois la sélection du fichier effectuée)

    * l'utilisation de onBlur ne change rien au problème de refus d'accès en plus d'être déclenché à d'autres moments qu'après la sélection d'un fichier.

    * pour un même formulaire (enctype="multipart/form-data"), un simple bouton (Input type BUTTON) pour lequel on programme this.form.submit() sur onClick fonctionne tant qu'aucun fichier à uploader n'est sélectionné. Dès que le Input type FILE est renseigné le submit via le bouton est refusé par IE (message Access denied)

    Il semblerait donc que le problème provienne d'une tentative de sécurisation de IE.

    Problème à suivre...

  8. #8
    Membre Expert
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    1 132
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 132
    Par défaut
    On avance petit à petit...

    J'ai trouvé lors de mes multiples tests et recherches sur le net un aspect que je qualifierais d'étrange concernant le comportement de IE pour la validation de formulaire...

    Je récapitule :
    * pour un même formulaire (enctype="multipart/form-data"), un simple bouton (Input type BUTTON) pour lequel on programme this.form.submit() sur onClick fonctionne tant qu'aucun fichier à uploader n'est sélectionné. Dès que le Input type FILE est renseigné le submit via le bouton est refusé par IE (message Access denied)
    Je suis parvenu à soumettre mon formulaire dans IE en effectuant l'appel à submit() de la manière suivante :
    name_de_mon_formulaire.submit();

    Cette solution est le seul moyen d'éviter le message "Accès refusé" cependant ce n'est pas la panacée car pour fonctionner l'appel doit être fait par un VRAI clic :
    Code /!\ seulement pour IE : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    <form name="monFormulaire" action="test" enctype="multipart/form-data" >
      <input type="file" name="upld" id ="upld" onchange="monFormulaire.submit()"/>
      <input type="button" onclick="monFormulaire.upld.click()"/>
      <input type="button" onclick="document.getElementById('upld').click()"/>
    </form>
    Dans l'exemple ci-dessus, l'envoi du formulaire fonctionne lorsque l'on clique sur le bouton "parcourir...", les 2 autres boutons provoquent une erreur "Accès refusé".

Discussions similaires

  1. Module upload images+texte auto-incrémenté
    Par Anesteziak dans le forum Langage
    Réponses: 9
    Dernier message: 01/04/2010, 16h43
  2. Bouton submit sous forme d'image
    Par hraiwen dans le forum Mise en page CSS
    Réponses: 5
    Dernier message: 31/08/2009, 17h11
  3. [Upload] Upload d'image en local sous easyphp
    Par camzo dans le forum Langage
    Réponses: 3
    Dernier message: 14/01/2007, 06h03
  4. [EasyPHP] Upload d'image sous EasyPHP en local : fichier de destination
    Par camzo dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 4
    Dernier message: 28/12/2006, 12h32
  5. Récupérer la valeur d'un submit sous forme d'image
    Par Jim_Nastiq dans le forum Langage
    Réponses: 6
    Dernier message: 28/04/2006, 10h12

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