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 :

R�cup�rer en JS un $_FILES sur un onclick


Sujet :

JavaScript

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    33
    D�tails du profil
    Informations personnelles :
    Localisation : France, Paris (�le de France)

    Informations forums :
    Inscription : Avril 2008
    Messages : 33
    Par d�faut R�cup�rer en JS un $_FILES sur un onclick
    Bonjour � tous,

    je m'explique pour ceux qui ne verrait pas le but de mon message.
    En fait je fais du traitement AJAX sur une page qui me permet de r�cup�rer les donn�es du image que j'ai choisi et que par la suite je vais stocker dans ma BDD.

    J'utilisais ce bout de code quand je faisais le traitement dans un <form> (classique), sauf que maintenant j'aimerais le faire en AJAX et donc me faire passer les variables $_FILES[image][tmp_name], $_FILES[image][type], $_FILES[image][size] dans du JS.

    Je ne vois pas trop comment faire.

    Pour ceux qui veulent voici mon ancien 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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    	 if(!is_uploaded_file($_FILES['image']['tmp_name'])){
    		//echo 'Un problème est survenu durant l opération. Veuillez réessayer !';
    	}
    	 else {
    		//liste des extensions possibles    
    		$extensions = array('/png', '/gif', '/jpg', '/jpeg');
     
    		//récupère la chaîne à partir du dernier / pour connaître l'extension
    		$extension = strrchr($_FILES['image']['type'], '/');
     
    		//vérifie si l'extension est dans notre tableau            
    		if(!in_array($extension, $extensions)){
    			//echo 'Vous devez uploader un fichier de type png, gif, jpg, jpeg.';
    		}
    		else {         
     
    			//on définit la taille maximale
    			define('MAXSIZE', 50000);        
    			if($_FILES['image']['size'] > MAXSIZE){
    			   //echo 'Votre image est supérieure à la taille maximale de '.(MAXSIZE/1000).' kilo-octets (Ko)';
    			}
    			else {
    				//on se connecte (remplacer les paramètres de connexion)
    				include ($connexion);
     
    				//Lecture du fichier. On doit utiliser la fonction mysql_escape_string car les données binaires contiennent des caractères spéciaux.
    				$image = mysql_escape_string(file_get_contents($_FILES['image']['tmp_name']));
     
    				$requete_count_image = mysql_query("SELECT COUNT( * ) NBR_ENTREE FROM images where id_film= '".$id_film."' ") or die(mysql_error());
    				$row_count_image = mysql_fetch_object($requete_count_image) or die(mysql_error());
    				if($row_count_image->NBR_ENTREE == 1){
    					mysql_query("UPDATE images SET img='$image', extension = '$_FILES[image][type]' WHERE id_film = '".$id_film."' ") or exit (mysql_error());
    				}
    				else{
    					mysql_query("INSERT INTO images(id_film, img, extension) VALUES('".$id_film."', '".$image."', '".$_FILES[image][type]."')") or exit (mysql_error());
    				}
     
    				include ($deconnexion);
    			}
    		}
    	}
    Merci d'avance de vos r�ponses.

  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 : 55
    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.

    Pour des raisons de s�curit�, le value d'un input de type file est reasonly, il est donc impossible de transmettre ces donn�es autrement que par un submit du formulaire et donc un rechargement de la page.

    Cela t'emb�te peut-�tre, mais dis toi bien que si ce n'�tait pas le cas, un simple fichier JavaScript permettrait de r�cup�rer n'importe quel fichier sur ta machine sans que tu ne t'en rende compte
    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
    Membre averti
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    33
    D�tails du profil
    Informations personnelles :
    Localisation : France, Paris (�le de France)

    Informations forums :
    Inscription : Avril 2008
    Messages : 33
    Par d�faut
    Mince, en effet cela m'emb�te un peu mais tampis j'essayerai de faire d'une autre mani�re alors...

    Je te remercie en tout cas pour cette r�ponse aussi rapide.

    Bonne journ�e

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    33
    D�tails du profil
    Informations personnelles :
    Localisation : France, Paris (�le de France)

    Informations forums :
    Inscription : Avril 2008
    Messages : 33
    Par d�faut
    Je reposte dans le cas o� ca pourrait int�resser d'autre personne.

    J'ai r�ussi � r�soudre mon probl�me en utilisant une autre m�thode :


    Le code JS :

    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
    function startUpload(){
          document.getElementById('f1_upload_process').style.visibility = 'visible';
          document.getElementById('f1_upload_form').style.visibility = 'hidden';
          return true;
    }
     
    function stopUpload(success,erreur){
          var result = '';
     
          if (success == 1){
             result = '<span>L\'image a été téléchargé avec succès<\/span><br/><br/>';
          }
          else {
             result = '<span>Une erreur est survenue<\/span><br />';
    		 if(erreur == 1){
    			result = '<span>Un problème est survenu durant l\'opération. Veuillez réessayer !<\/span>';
    		 }
    		 if(erreur==2){
    			result = '<span>Vous devez uploader un fichier de type png, gif, jpg, jpeg.<\/span>';
    		 }
    		 if(erreur==3){
    			result = '<span>Votre image est supérieure à la taille maximale acceptée.<\/span>';
    		 }
    		 result = result+"<br/><br/>";
          }
          document.getElementById('f1_upload_process').style.visibility = 'hidden';
          document.getElementById('f1_upload_form').innerHTML = result + '<label><input name="image" type="file" size="30" /><\/label><br /><br /><label><input type="submit" name="submitBtn" value="Upload" /><\/label><br /><label>Format accepté (png, gif, jpg, jpeg)<br /> Taille inférieur à 50ko<br /><\/label>';
          document.getElementById('f1_upload_form').style.visibility = 'visible';      
          return true;   
    }
    Le code 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
    	<form action="Materiel/upload.php?id_film=<? echo $id_film; ?>" method="post" enctype="multipart/form-data" target="upload_target" onsubmit="startUpload();" >
            <p id="f1_upload_process" style="visibility:hidden">Loading...<br/><img src="Materiel/loader.gif" /></p>
            <p id="f1_upload_form" align="center">
    		<?php
                            include($connexion);
                
                            $affichage = mysql_query("SELECT id_img FROM images where id_film = '$id_film' ") or exit (mysql_error());
                            while($result = mysql_fetch_assoc($affichage)) {
                                    echo '<a align="center" href="Materiel/apercu.php?id_img='.$result[id_img].'" target="popup" onClick="wopen(\'Materiel/apercu.php?id_img='.$result[id_img].'\', \'popup\', 700, 700); return false;"><img src="Materiel/apercu.php?id_img='.$result[id_img].'" height="280" width="180" /></a>';
                            }
                            include($deconnexion);
                    ?>
    		<br /><br /><br />
            <label> 
                <input name="image" type="file"/>
            </label>
    		<br /><br />
            <label>
                <input type="submit" name="submitBtn" value="Upload" />
            </label>
    		<br />
    		<label>Format accepté (png, gif, jpg, jpeg)<br /> Taille inférieur à 50ko<br /></label>
            </p>
    		<iframe id="upload_target" name="upload_target" src="#" style="width:0;height:0;border:0px solid #fff;"></iframe>
     
        </form>
    La page de traitement :
    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
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    <?php
       $result = 0;
            $id_film=$_REQUEST['id_film'];
            $msg = 0;
     
            $path="../../";
            $connexion = $path."BDD/connexion.php";
            $deconnexion = $path."BDD/deconnexion.php";
     
            //Indique si le fichier a été téléchargé
             if(!is_uploaded_file($_FILES['image']['tmp_name'])){
                    $msg = 1;
            }
             else {
                    //liste des extensions possibles    
                    $extensions = array('/png', '/gif', '/jpg', '/jpeg');
                    
                    //récupère la chaîne à partir du dernier / pour connaître l'extension
                    $extension = strrchr($_FILES['image']['type'], '/');
                    
                    //vérifie si l'extension est dans notre tableau            
                    if(!in_array($extension, $extensions)){
                            $msg = 2;
                    }
                    else {         
     
                            //on définit la taille maximale
                            define('MAXSIZE', 50000);        
                            if($_FILES['image']['size'] > MAXSIZE){
                               $msg = 3;
                            }
                            else {
                                    //on se connecte (remplacer les paramètres de connexion)
                                    include ($connexion);
                                    
                                    //Lecture du fichier. On doit utiliser la fonction mysql_escape_string car les données binaires contiennent des caractères spéciaux.
                                    $image = mysql_escape_string(file_get_contents($_FILES['image']['tmp_name']));
                                    
                                    $requete_count_image = mysql_query("SELECT COUNT( * ) NBR_ENTREE FROM images where id_film= '".$id_film."' ") or die(mysql_error());
                                    $row_count_image = mysql_fetch_object($requete_count_image) or die(mysql_error());
                                    if($row_count_image->NBR_ENTREE == 1){
                                            mysql_query("UPDATE images SET img='$image', extension = '$_FILES[image][type]' WHERE id_film = '".$id_film."' ") or exit (mysql_error());
                                    }
                                    else{
                                            mysql_query("INSERT INTO images(id_film, img, extension) VALUES('".$id_film."', '".$image."', '".$_FILES[image][type]."')") or exit (mysql_error());
                                    }
                                    $result = 1;
                                    include ($deconnexion);
                            }
                    }
            }
            sleep(1);
            
    ?>
     
    <script language="javascript" type="text/javascript">window.top.window.stopUpload(<?php echo $result; ?>,<?php echo $msg; ?>);</script>

    Me manque plus qu'� remettre l'image que j'ai upload� sur la page php et c'est parfait.

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. D�truire un bouton sur son OnClick
    Par Volfoni dans le forum C++Builder
    R�ponses: 5
    Dernier message: 08/06/2006, 12h00
  2. Mettre deux actions sur un onClick
    Par budiste dans le forum G�n�ral JavaScript
    R�ponses: 18
    Dernier message: 16/11/2005, 16h17
  3. R�ponses: 1
    Dernier message: 05/11/2005, 12h16
  4. Rendre un champ non modifiable sur un onclick
    Par damjal dans le forum G�n�ral JavaScript
    R�ponses: 4
    Dernier message: 12/10/2005, 01h16
  5. R�ponses: 2
    Dernier message: 20/08/2004, 17h10

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