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

Langage PHP Discussion :

Upload un .xls sur le serveur [PHP 5.3]


Sujet :

Langage PHP

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2015
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2015
    Messages : 15
    Points : 12
    Points
    12
    Par défaut Upload un .xls sur le serveur
    Bonjour à tous!

    j'essaye tant bien que mal à upload un fichier .xls via un formulaire html. mon formulaire contient un input de type file permettant d'envoyer en POST le fichier.

    voila ce que j'ai coté 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
    <?php
    $fichier = basename($_FILES['filexls']['name']);
    $taille_maxi = 1000000;
    $taille = filesize($_FILES['filexls']['tmp_name']);
    $extensions = array('.xls', '.pdf');
    $extension = strrchr($_FILES['filexls']['name'], '.');
    //Début des vérifications de sécurité...
    if(!in_array($extension, $extensions)) //Si l'extension n'est pas dans le tableau
    {
         $erreur = 'Vous devez uploader un fichier de type xls (Excel).';
    }
    if($taille>$taille_maxi)
    {
         $erreur = 'Le fichier est trop gros...';
    }
    if(!isset($erreur)) //S'il n'y a pas d'erreur, on upload
    {
         //On formate le nom du fichier ici
    	$uploaddir = '/var/www/html/drupal/files/';
    	$uploadfile = $uploaddir . basename($_FILES['filexls']['name']);
         if(move_uploaded_file($_FILES['filexls']['tmp_name'], $uploadfile)) //Si la fonction renvoie TRUE, c'est que ça a fonctionné...
         {
              echo 'Upload effectué avec succès !';
         }
         else //Sinon (la fonction renvoie FALSE).
         {
    		echo 'Echec de l\'upload ! <br/>';
         }
    }
    else
    {
         echo $erreur;
    }
    unset($_FILES);
    ?>
    Bien sur, je me retrouve avec un "Echec de l'upload"

    Je ne sais pas trop pourquoi..

    Un indice ? merci.

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    tu as fais le debugage minimum ? Contrôler $uploadfile et $_FILES ?

    move_uploaded_file() renvoit un warning en cas d'erreur, affiche toutes les erreurs PHP.

  3. #3
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2015
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2015
    Messages : 15
    Points : 12
    Points
    12
    Par défaut
    Quand tu dis "contrôler" ces variables, c'est a dire ?

    si je fais un var_dump() sur elle, oué elle sont correct. le nom du fichier, le type etc... résultat ci dessous
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    array(1) { ["filexls"]=> array(5) { ["name"]=> string(13) "Classeur1.xls" ["type"]=> string(24) "application/vnd.ms-excel" ["tmp_name"]=> string(14) "/tmp/phppYNUka" ["error"]=> int(0) ["size"]=> int(17920) } }
    j'ai rajouter error_reporting(E_ALL); mais rien..

    j'ai remplacer par

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    error_reporting(E_ALL);	
    $uploaddir = '/var/www/html/drupal/sites/files/';
    	$uploadfile = $uploaddir . basename($_FILES['filexls']['name']);
    	var_dump($uploadfile);
    	move_uploaded_file($_FILES['filexls']['name'], $uploadfile);
    	var_dump($uploadfile);
    les deux var_dump s'affiche, pas de warnings ou autres erreurs... mais le fichier n'est toujours pas sur mon server. Le server est un serveur Linux avec Mysql.. par contre le server ne dispose pas d'internet. Le site est un intranet.

    EDIT: olala , je crois que ça a marcher là!


    EDIT 2 : Après avoir mis les droit d'ecriture chmod 777 sur mon dossier de récéption, et après avoir remplacer
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    move_uploaded_file($_FILES['filexls']['name'], $uploadfile);
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    move_uploaded_file($_FILES['filexls']['tmp_name'], $uploadfile)
    tout marche !!

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

Discussions similaires

  1. [Upload] Uploader des images sur mon serveur
    Par arti2004 dans le forum Langage
    Réponses: 13
    Dernier message: 12/07/2006, 11h25
  2. Réponses: 3
    Dernier message: 20/04/2006, 23h21
  3. uploader une image sur le serveur
    Par kespy13 dans le forum Langage
    Réponses: 5
    Dernier message: 07/04/2006, 20h01
  4. mettre un fichier .xls sur un serveur distant
    Par mael94420 dans le forum ASP
    Réponses: 2
    Dernier message: 05/01/2006, 18h51
  5. Upload de fichier sur le serveur
    Par krfa1 dans le forum ASP
    Réponses: 9
    Dernier message: 29/11/2005, 13h50

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