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

AJAX Discussion :

[AJAX] upload avec ajax enctype


Sujet :

AJAX

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Invité
    Invité(e)
    Par défaut [AJAX] upload avec ajax enctype
    Bonjour,
    j'espéres mon titre a peut prés correcte.
    Pour avoir une image (de progression) pendant un upload,
    j'ais fait un AJAX
    Seulement je comprends bien que mon enctype du form ne sert plus et donc
    1) je parcours
    2) J'ais bien mon gif
    3) il s'arréte avec le timeout mais l'image n'est pas présente,

    Bien sur je comprends qu'il faut sans doute passer le POST autrement
    en ajax mais je n'ais rien trouvé
    voici mes php pret a l'emploie (sauf chemin destination a changer
    ajax_upload.php
    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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
     
    <script type="text/javascript">
    function image()
    {
    document.getElementById('load').style.display="none";
    }
    function maFonctionAjax(files1)
    {
      var MonAjax;
      if (window.XMLHttpRequest){ MonAjax = new XMLHttpRequest();}
      else if (window.ActiveXObject) {MonAjax = new ActiveXObject('Microsoft.XMLHTTP');}
      else {
        alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest..."); 
        MonAjax = false;   }
      MonAjax.open('POST',"ajax_upload_pdo.php",true);
      MonAjax.onreadystatechange = function()
      {
          if (MonAjax.readyState == 4 && MonAjax.status==200)
          {
              if (document.getElementById) 
              {    
                        document.getElementById('LeRetour').innerHTML='<font color=GREEN>'+MonAjax.responseText+'</font>';
                        setTimeout("image()", 2000);                    
              }     
          }
          else{
               document.getElementById('load').style.display="inline";
               }
      }
      MonAjax.setRequestHeader('Content-type','application/x-www-form-urlencoded');
      MonAjax.send('&files1='+files1);                  
    }
    </SCRIPT>
    <div class='centre0'>
    <br /><br /><br />
    <img src='x_logos/ajaxloader.gif' style='display:none' id='load'  name='load' />
    <br /><br /><br />
    <form method='post' onsubmit='maFonctionAjax(this.files1.value);return false' action='' enctype='multipart/form-data'>
    Votre avatar  <input class='le213' name='files1' id='files1' type='file'  /><br />
    <br /><br />
    <input type=submit value='envoyer'  /><br />
    </form>
    <div id='LeRetour'></div>
    </div>
    </body></html>
    ajax_upload_pdo.php

    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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
     
    <?PHP
    header('Content-type: text/html; charset=ISO-8859-1');
    if (isset($_FILES['files1'])) $Limage=trim($_FILES['files1']['name']);
        else $Limage="";
    $message=$Limage;
    if(  $Limage!="" )
     {
     $poid_max="40000"; 
     $destin="x_logos/"; 
     $taille = getimagesize($_FILES['files1']['tmp_name']);
     $poid = filesize($_FILES['files1']['tmp_name']); 
     $message="";
     if(substr($Limage,-3) !="jpg")
       {$message="L image doit etre au format jpeg jpg";}
     if ($poid>$poid_max)
      {$message=" l image est trop lourde ... 40 Ko maxi";}
     if ($poid<=$poid_max && $message=="")
      {
       // === on supprime les accents et les espaces du nom de l'image 
       $Limage = strtr($Limage,  "ÀÁÂÃÄÅàáâãäåÒÓÔÕÖØòóôõöøÈÉÊËèéêëÇçÌÍÎÏìíîïÙÚÛÜùúûüÿÑñ",   
        "aaaaaaaaaaaaooooooooooooeeeeeeeecciiiiiiiiuuuuuuuuynn");  
       // === on supprime les espaces
       $Limage=str_replace(" ","_",$Limage);
       // === on met en minuscule
       $Limage=strtolower($Limage); 
       $newnom=$destin.$Limage;
       if (file_exists($destin.$Limage))
         {
            $message="L image est déjas sur le site web";
         }
         else
          {
          copy($_FILES['files1']['tmp_name'],$destin.$Limage);
          $imagefile=$destin.$Limage;
          $src_img = imagecreatefromjpeg($imagefile);
          $message="L image ".$newnom." est copiée";
         }
      }
     }
    echo $message ." ".$Limage;
    ?>

  2. #2
    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
    Pour des raisons de sécurité, tu ne peux transmettre via AJAX que le value d'un input file, c'est-à-dire le chemin du fichier sous forme de texte, pas le fichier lui-même.
    Pour faire un upload qui ressemblerait à de l'AJAX, il faut passer par exemple par un formulaire dans une iframe invisible en copiant le lien de ton input file dans celui de l'iframe et de soumettre ce formulaire, ainsi, seule l'iframe est rechargée, pas ta page principale.
    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

  3. #3
    Invité
    Invité(e)
    Par défaut
    Merci a toi de ta réponse,
    Je comprends trés bien, je vais chercher, mais j'ais peut d'espoirs
    Sympa d'avoir regardé ce probléme, je vais mettre en résolu, mais si je trouves un biais, je le mettrais ici.

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

Discussions similaires

  1. Barre de transfert sur upload avec AJAX
    Par guillaume2vo dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 29/11/2010, 09h58
  2. [AJAX] Sécurité avec AJAX
    Par Oluha dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 05/07/2006, 18h01
  3. [AJAX] Résultat avec Ajax
    Par incao dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 13/05/2006, 22h14
  4. [AJAX] PHP avec ajax(makerequest)
    Par Benjiijneb dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 11/04/2006, 16h53
  5. [AJAX] Modifier avec AJAX une image générée avec GD
    Par thsantac dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 27/03/2006, 19h34

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