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 :

Problème $_FILES


Sujet :

JavaScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de alexmorel
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    196
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : Suisse

    Informations forums :
    Inscription : Septembre 2003
    Messages : 196
    Par défaut Problème $_FILES
    Voilà depuis une page j'execute du javascirpt qui envois les infos à une page php.

    Le problème c'est que le fichier ce crée mais il est vide.

    Alors un peu d'aide est la bienvenue....

    Merci d'avance

    le formulaire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    echo '<form method="post" enctype="multipart/form-data">'; 
    echo '<input type="file" name="photo">'; 
    echo ' <input type="button" name="Submit2" onclick="photos(1)" value="Envoyer">'; 
    echo '</form>';
    la fonction 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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
     
    function photos(page) {
      var photo = document.getElementById("photo").value;
      var tmp="file="+photo;
     
    /* on spécifie la méthode, l’URL et le type de transmission  */
        requete.open("POST","admin/scripts/photos.php",true);  
     
             requete.onreadystatechange = function()
     	{
    		/* si on a recu la reponse */
    		if(requete.readyState == 4)
     		{  
    			/* on recoit les données et on les affichent*/
     
    			alert(requete.responseText);
    			mapage(page);
     
    		}
    	}
     
     
    	/* on précise l'encodage en spécifiant l'en-tête adéquat */
    	requete.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
    	requete.setRequestHeader("choix", "test");
    	/* on execute la requete en transmettant les données */
     
    	requete.send(tmp);  
      }
    le fichier qui upload
    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
     
    /*Nom du fichier uploadé sur le serveur*/ 
    $file_name="fichier.jpg"; 
    $login ='mon_login';
    $password = 'mon_passe';
    /*Nom du fichier uploadé sur le serveur*/ 
    $file_name="fichier.jpg"; 
    $login ='alexmorel';
    $password = 'freesurf';
    //$_POST['file']; si je le met le fichier ne se crée pas sur le serveur
    $file = $_FILES['file']['name'];  //cree un fichier vide
     
    if($file_name != "") 
    { 
    /* Connexion au serveur */ 
    $conn_id = ftp_connect("mon_ftp.com"); 
    $login_result = ftp_login($conn_id, $login, $password); 
    if ($login_result) 
    { 
       echo ("Connexion reussi \n"); 
    } 
     
    /*Endroit ou le fichier sera uploadé sur le serveur*/ 
    $cfg_upload_path = "images/magasin"; 
    if(!is_writeable($cfg_upload_path)) 
    { 
     
       echo("Le repertoire n'est pas accessible en ecriture.\n"); 
    } 
    /*le up en question*/ 
    $upload=ftp_put($conn_id, $cfg_upload_path."/".$file_name, $file, FTP_BINARY); 
    if (!$upload) 
    { 
     
    	echo "Le telechargement FTP a echoue!"; 
    } 
    else 
    { 
       echo "Telechargement ftp reussit "; 
    } 
    ftp_close($conn_id); 
    }

  2. #2
    Membre émérite
    Avatar de ozzmax
    Inscrit en
    Novembre 2005
    Messages
    977
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Novembre 2005
    Messages : 977
    Par défaut Re: Problème $_FILES
    Citation Envoyé par alexmorel
    Le problème c'est que le fichier ce crée mais il est vide.
    Donc tes fonctions javascript fonctionnes...alors sa peut provenir de ton formulaire...est ce qu'il faut que tu le submit... c'est p-e
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    /* on spécifie la méthode, l’URL et le type de transmission  */ 
        requete.open("POST","admin/scripts/photos.php",true);
    qui cause le probleme

  3. #3
    Membre confirmé Avatar de alexmorel
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    196
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : Suisse

    Informations forums :
    Inscription : Septembre 2003
    Messages : 196
    Par défaut
    le but est de passer par mon fichier javascript jusque là tout fonctionne.

    si je regarde ce que contient
    J'ai bien l'adresse de mon fichier (ex. c:\image.jpg)

    le problème vient que la fonction ftp de php attend un type
    mais si je fais

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $_FILES['file'][name] = $_POST['file']
    mais là il ne crée plus le fichier vide sur le serveur alors que le $_FILES contient bien le lien vers mon image dans name


    Je vois pas ou c'est faux

    Aidez moi

  4. #4
    Membre Expert
    Inscrit en
    Juillet 2004
    Messages
    1 027
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 1 027
    Par défaut
    Salut,

    Si je comprend bien ton script tu voudrais uploader une image sur le serveur, puis la copier en ftp vers un autre serveur ?

    Sa me parait un peu torturé ce que tu veux faire :s

    Ceci dit, si j'ai correctement compris ce que tu veux faire, il faut tout d'abord que tu ups l'image via ton form avec le multipart.
    Deuxiemement, tu fais un move_uploaded_file ( je croit que c'est le nom de la fonction).
    Troisiemement, tu ouvres une connexion ftp en php, et tu indiques en source le fichier indiqué après le move_uploaded_file().

    Bon en mm tps j'ai peut etre rien compris... faut dire qu'à partir de

    requete.open("POST","admin/scripts/photos.php",true);

    Je suis à la rue :/

    au cas ou

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    				if( isset($_FILES["_FILETOIMPORT_"]['tmp_name']) )
    				{
    					move_uploaded_file($_FILES["_FILETOIMPORT_"]['tmp_name'] , "upload/".$_FILES["_FILETOIMPORT_"]["name"]);
    					return "upload/".$_FILES["_FILETOIMPORT_"]["name"];
    				}
    _FILETOIMPORT_ est à remplacer par le nom de ton champs file de ton form.
    Bye

  5. #5
    Membre confirmé Avatar de alexmorel
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    196
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : Suisse

    Informations forums :
    Inscription : Septembre 2003
    Messages : 196
    Par défaut
    non je veux juste uploader une image sur mon site depuis une page de celui ci.

  6. #6
    Membre Expert
    Avatar de Bidouille
    Inscrit en
    Mars 2003
    Messages
    1 291
    Détails du profil
    Informations forums :
    Inscription : Mars 2003
    Messages : 1 291
    Par défaut
    Vraisemblablement tu mélanges HTML et FTP et tu ne peux pas utiliser les deux.

  7. #7
    Membre confirmé Avatar de alexmorel
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    196
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : Suisse

    Informations forums :
    Inscription : Septembre 2003
    Messages : 196
    Par défaut
    le html me sert juste pour les composant du formulaire
    et le php pour le ftp

  8. #8
    Membre Expert
    Avatar de Bidouille
    Inscrit en
    Mars 2003
    Messages
    1 291
    Détails du profil
    Informations forums :
    Inscription : Mars 2003
    Messages : 1 291
    Par défaut
    Regarde déjà dans la et pars d'un script qui fonctionne afin de contrôler que le fichier est bien transmis via HTML sur ton serveur

  9. #9
    Membre confirmé Avatar de alexmorel
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    196
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : Suisse

    Informations forums :
    Inscription : Septembre 2003
    Messages : 196
    Par défaut
    Pour simplifier
    j'ai supprimer le javascript dans mes page

    page formulaire.php


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
     <?  
    	   echo '<br>';
    	   echo '<form method="post" enctype="multipart/form-data" action="photos.php">'; 
           echo '<INPUT NAME="userfile" TYPE="file">'; 
    	   echo ' <input type="submit" name="Submit2"  value="Envoyer">'; 
    	   echo '</form>';    
    ?>
    le fichier photos.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
     
    <?php 
    /*Nom du fichier uploadé sur le serveur*/ 
    $file_name="fichier.jpg"; 
    $login ='mon_login';
    $password = 'mon_passe';
     
     
    $file = $_FILES['userfile']['name'];
     
    if($file_name != "") 
    { 
    /* Connexion au serveur */ 
    $conn_id = ftp_connect("mon_serveur.com"); 
    $login_result = ftp_login($conn_id, $login, $password); 
    if ($login_result) 
    { 
       echo ("Connexion reussi \n"); 
    } 
     
    /*Endroit ou le fichier sera uploadé sur le serveur*/ 
    $cfg_upload_path = "images/magasin"; 
    if(!is_writeable($cfg_upload_path)) 
    { 
     
       echo("Le repertoire n'est pas accessible en ecriture.\n"); 
    } 
    /*le up en question*/ 
    $upload=ftp_put($conn_id, $cfg_upload_path."/".$file_name, $file, FTP_BINARY); 
    if (!$upload) 
    { 
     
    	echo "Le telechargement FTP a echoue!"; 
    } 
    else 
    { 
       echo "Telechargement ftp reussit "; 
    } 
    ftp_close($conn_id); 
    } 
    ?>
    mais pas moyen de créer mon fichier

    Aidez moi

  10. #10
    Membre Expert
    Avatar de Bidouille
    Inscrit en
    Mars 2003
    Messages
    1 291
    Détails du profil
    Informations forums :
    Inscription : Mars 2003
    Messages : 1 291
    Par défaut
    Au risque de me répéter (une dernière fois) :

    pars d'un script qui fonctionne afin de contrôler que le fichier est bien transmis via HTML
    http://php.developpez.com/faq/?page=...ichiers_upload

  11. #11
    Membre confirmé Avatar de alexmorel
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    196
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : Suisse

    Informations forums :
    Inscription : Septembre 2003
    Messages : 196
    Par défaut
    alors je t'ai ecouter, mais ca marche quand même pas

    page formulaire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    <html>
    <body>
    <p>
    <form method="post" enctype="multipart/form-data" action="uploadfile.php">
        <input type="file" name="userfile" size="50">
        <br>
        <input type="submit" value="Envoi">
    </form>
    </p>
    </body>
    </html>
    page ftp
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    <html>
    <body>
    <?php
    $stock = '/images/';
     
    if (move_uploaded_file($_FILES['userfile']['tmp_name'], $stock.$_FILES['userfile']['name']))
    {
        echo "Le fichier ".$_FILES['userfile']['name'].
                " a été téléchargé avec succès dans ".$stock;
    }
    ?>
    </body>
    </html>

    il m'écrit

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Warning: move_uploaded_file(): open_basedir restriction in effect. File(/images/w.paclitestretch0503.jpg) is not within the allowed path(s): (/home/www/db5eabd14bfe01eec636a6d359e50b5a/:/tmp/) in /home/www/db5eabd14bfe01eec636a6d359e50b5a/web/test/uploadfile.php on line 6
    et sur le dossier du site images est chmod 777

  12. #12
    Membre Expert
    Avatar de Bidouille
    Inscrit en
    Mars 2003
    Messages
    1 291
    Détails du profil
    Informations forums :
    Inscription : Mars 2003
    Messages : 1 291
    Par défaut
    Vraisemblablement, il y a des restrictions chez ton hébergeur. Il faut voir cela avec lui.

  13. #13
    Membre confirmé Avatar de alexmorel
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    196
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : Suisse

    Informations forums :
    Inscription : Septembre 2003
    Messages : 196
    Par défaut
    Alors j'ai reglé le problème du repertoire

    mais j'ai toujour le probleme entre la transmission du javacript et du php

    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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
     
      function photos(page) {
     var photo = document.getElementById("photo").value;
     
     
      var tmp="file="+photo;
     
    /* on spécifie la méthode, l’URL et le type de transmission  */
    	requete.open("POST","admin/scripts/photos.php",true);  
     
    	requete.onreadystatechange = function()
     	{
    		/* si on a recu la reponse */
    		if(requete.readyState == 4)
     		{  
    			/* on recoit les données et on les affichent*/
     
    			alert(requete.responseText);
    			mapage(page);
     
    		}
    	}
     
     
    	/* on précise l'encodage en spécifiant l'en-tête adéquat */
    	requete.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
    	/* on execute la requete en transmettant les données */
     
    	requete.send(tmp);  
      }

    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
     
    <?php 
    /*Endroit ou le fichier sera uploadé sur le serveur*/ 
     
    $stock = $DOCUMENT_ROOT.'/images/magasin/';
     
    if(isset($_POST['file']))
    {
    if (move_uploaded_file($_POST['file'], $stock.'asdas.jpg'))
    {
        echo "Le fichier ".$_POST['file'].
                " a été téléchargé avec succès dans ".$stock;
    }
    else
    {
    	echo "Erreur : la photo n'a pas pu etre telecharger ?";
    }
    }
    else
    {
    	echo 'la variable n existe pas';
    }
    il me dit que le la photo n'a pas pu etre telecharger


    Si je passe pas par le javacript et que je met
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    if (move_uploaded_file($_FILES['photo']['tmp_name'], $stock.$_FILES['photo']['name']))
    Cela fonctionne.

    Mais avec $_POST['photo'] ca marche pas et je vois pas comment passer la variable depuis mon javascript autrement

  14. #14
    Membre Expert
    Avatar de Bidouille
    Inscrit en
    Mars 2003
    Messages
    1 291
    Détails du profil
    Informations forums :
    Inscription : Mars 2003
    Messages : 1 291
    Par défaut
    Citation Envoyé par alexmorel
    ca marche pas et je vois pas comment passer la variable depuis mon javascript autrement
    Moi, je ne vois plus de problème avec PHP. Transfert du fil dans la section Javascript.

  15. #15
    Expert confirmé

    Avatar de denisC
    Profil pro
    Développeur Java
    Inscrit en
    Février 2005
    Messages
    4 050
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Service public

    Informations forums :
    Inscription : Février 2005
    Messages : 4 050
    Par défaut
    Alors, le forum JS réponds: ce que tu cherches à faire n'est possible qu'avec IE. (cf http://www.15seconds.com/issue/010522.htm).

    Réflechis si ce que tu cherches à faire est vraiment essentiel ou non? Parceque tu vas faire un truc (très) compliqué, donc mieux vaut réfléchir avant si ça vaut le coup...

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

Discussions similaires

  1. Problème avec $_FILES
    Par sliverman dans le forum Langage
    Réponses: 19
    Dernier message: 07/06/2010, 12h22
  2. Problème avec if(isset($_FILES['monfichier']))
    Par delux450 dans le forum Langage
    Réponses: 2
    Dernier message: 15/06/2008, 22h32
  3. Problème de poids avec $_FILES
    Par taly dans le forum Langage
    Réponses: 2
    Dernier message: 27/06/2006, 12h12
  4. Problème d'installation oracle 8.1.7 sous NT
    Par Anonymous dans le forum Installation
    Réponses: 7
    Dernier message: 02/08/2002, 14h18
  5. Problème avec la mémoire virtuelle
    Par Anonymous dans le forum CORBA
    Réponses: 13
    Dernier message: 16/04/2002, 16h10

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