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 :

[AJAX] upload image


Sujet :

JavaScript

  1. #1
    Membre actif
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    818
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Drôme (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2005
    Messages : 818
    Points : 288
    Points
    288
    Par défaut [AJAX] upload image
    Bonjour, Je cherche a faire un upload d'image en ajax.
    J'ai trouvé une explication, mais j'aurai besoin d'aide pour l'appliquer...

    Voici ce que j'ai trouvé:
    submit form with frame target

    compatibilité: tous navigateurs

    Creer une page de frame, avec un frameset vide et invisible nommé “fileframe” pour l’exemple et l’autre contenant votre inputfile. Lors d’un inputfile.onchange, copiez les attributs action et target du formulaire contenant votre input file et remplacer les par l’url d’un script server et par le nom de l’autre frame: “fileframe”. Puis lancez form.submit(). Cela va envoyer toutes les données du formulaire vers “fileframe”, y compris donc les fichiers. Ensuite, vous vous échanger les données entre les frame pour sauvegarder les données renvoyées par le script, sans oublier de supprimer les input file déjà envoyés pour que cela ne se répète pas.
    Si vous compter envoyer un nombre non défini de fichier, lorsque le upload commence (inputfile.onchange est lancé), vous pouvez activer la propriété disable sur les input file, ainsi il ne seront pas renvoyé.
    Je crois avoir compris qu'il faut utiliser des frames, mais j'aurai besoin d'un exemple simpliste pour m'aider...

  2. #2
    Membre actif
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    818
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Drôme (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2005
    Messages : 818
    Points : 288
    Points
    288
    Par défaut
    J'ai réussi en partie!
    Ca marche sur firefox et chrome, mais pas sous ie!!

    Voici ce que j'ai fais:
    le code javascript:
    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
    18
    19
     
    function gestion_image()
    {
    var contenu_div_image=document.getElementById('image_telegram');
    contenu_div_image.innerHTML="";
    var form=document.createElement("form");
    form.enctype="multipart/form-data";
    form.method="POST";
    form.id="form_upload_image";
    form.action="maj_img.php";
    form.target="iframe";
    var inputfile = document.createElement("input");
    inputfile.type="file";
    inputfile.id="file_img";
    inputfile.name="file_img";
    inputfile.onchange=function(){ form.submit();};
    form.appendChild(inputfile);
    contenu_div_image.appendChild(form);
    }
    html:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    <div id="image_telegram" onclick="javascript:gestion_image();">Cliquer ici pour insérer une image</div>
    <iframe style="display: none;" id="iframe" name="iframe"></iframe>
    Et dans le fichier maj_img.php (action du form générer dynamiquement)
    Je copie l'image et j'affiche le code retour comme ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    <?
    $sourceimg=$_FILES["file_img"]["tmp_name"];
    $destimg="photos/".$_FILES["file_img"]["name"];
    copy($sourceimg,$destimg);
     
    echo "<script type=\"text/javascript\">
        parent.document.getElementById('image_telegram').innerHTML = \"<img src='photos/".$_FILES["file_img"]["name"]."'>\";
    	</script>";
    ?>
    Le problème sous IE s'est que $_FILES["file_img"]["name"] et $_FILES["file_img"]["tmp_name"] ne contiennent rien... La transmission ne se fait pas...
    Comment faire pour que ca marche sous ie?

  3. #3
    Membre du Club
    Inscrit en
    Décembre 2008
    Messages
    46
    Détails du profil
    Informations personnelles :
    Âge : 47

    Informations forums :
    Inscription : Décembre 2008
    Messages : 46
    Points : 52
    Points
    52
    Par défaut
    Première remarque :
    Ce que tu as fait n'est pas de l'ajax.

    Seconde remarque :
    J'ai remarqué que IE a quelque soucis lors de la création de certains éléments en dynamique... ou a du mal avec le onchange du input file. En fait je ne sais plus. Tout ce que je sais c'est que je suis arrivé à la conclusion de le faire directement en HTML et d'ajouter un bouton valider, pour éviter de me prendre trop la tête.

    Troisième remarque :
    Tu vires à la fin le formulaire d'upload, pour le remplacer par l'image ? (soit, tu me diras "pourquoi pas ?")

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <div id='image_telegram'>
         <form action="maj_img.php" enctype="multipart/form-data" method="POST">
             <input type="file" name="upload_file">
             <input type="submit">
         </form>
    </div>

  4. #4
    Membre actif
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    818
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Drôme (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2005
    Messages : 818
    Points : 288
    Points
    288
    Par défaut
    Je sais que ce n'est pas de l'ajax, mais mon message a été redirigé dans ce forum...
    C'est du pseudo ajax, car il y a quand meme du xml entre l'iframe et le document parent!! lol

    J'ai réussi en faisant autrement...
    Au lieu de générer mon formulaire dynamiquement je le génère au chargement de la page, et je le masque avant de le demasquer pour pouvoir faire appel à mon script...

    Mais n'empeche que je ne comprend pas bien pourquoi IE galère comme ca avec des trucs qui ne paraissent pas très poussés!!

    Merci...

  5. #5
    Expert éminent sénior

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Points : 36 571
    Points
    36 571
    Par défaut
    Citation Envoyé par calitom Voir le message
    Je sais que ce n'est pas de l'ajax, mais mon message a été redirigé dans ce forum...
    Citation Envoyé par calitom Voir le message
    Bonjour, Je cherche a faire un upload d'image en ajax.

Discussions similaires

  1. [AJAX] Upload image en ajax
    Par Laurelaie dans le forum AJAX
    Réponses: 4
    Dernier message: 15/10/2009, 13h21
  2. [AJAX] UPLOAD d'une image
    Par JLC83 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 17/09/2008, 10h35
  3. [AJAX] Rafraichir / upload image
    Par vince.bbob dans le forum Général JavaScript
    Réponses: 0
    Dernier message: 10/04/2008, 20h42
  4. [AJAX] upload d'images php/ajax
    Par zehni dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 17/08/2007, 14h13
  5. [AJAX] upload image + recup variable
    Par minimoof dans le forum Général JavaScript
    Réponses: 15
    Dernier message: 31/05/2007, 21h57

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