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 :

Probleme multi upload


Sujet :

Langage PHP

  1. #21
    Expert éminent sénior

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 380
    Points : 10 410
    Points
    10 410
    Par défaut
    Citation Envoyé par Ercan67000 Voir le message
    Merci beaucoup de votre aide vous m'avez beaucoup aidé et désolé de la gène encore !
    Nan y'a pas de gène sinon on répondrait pas. Parfois on paraît peut être un peu lourd en disant continuellement de se référer au manuel mais c'est juste pour faire prendre de bonnes habitudes

  2. #22
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2011
    Messages
    124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2011
    Messages : 124
    Points : 34
    Points
    34
    Par défaut
    Désolé de vous dérangez encore mais je viens d'entrer le code que vous m'avez dit et des erreurs apparaissent à l'écran.

    Extrait du 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
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
     
    <?php
    if (isset($_FILES["fichier"])) {	
                foreach ($_FILES["fichier"]["error"] as $key => $error) {   
    $dossier = 'upload/';
    $fichier = basename($_FILES['fichier']['name'][$key]);
    $taille_maxi = 20971520;
    $taille = filesize($_FILES['fichier']['tmp_name'][$key]);
    $extensions = array('png', 'gif', 'jpg', 'jpeg', 'mp3', 'doc', 'docx', 'avi', 'txt', 'pdf');
    $extension = strtolower( substr( strrchr($_FILES['fichier']['name'][$key], '.') ,1) );
    $upload_results = array();
    //$extension = strrchr($_FILES['fichier']['name'][$key], '.');
    //$move_upload = 
    //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 png, gif, jpg, jpeg, txt, doc, mp3 ou encore avi<br>';
    		}
    			if($taille>$taille_maxi)
    			{
    			$erreur = 'Le fichier est trop volumineux';
    			}
    				if(!isset($erreur)) //S'il n'y a pas d'erreur, on upload
    				{
    				//On formate le nom du fichier ici...
    				$fichier = strtr($fichier,
    				'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ',
    				'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy');
    				$fichier = preg_replace('/([^.a-z0-9]+)/i', '-', $fichier);
    				$fichier = uniqId().$extension;
    				$tmp_name = $_FILES["fichier"]["tmp_name"][$key];
    				$url = 'http://localhost/Projet/upload/'.$fichier;
    					if($upload_results[$fichier] = move_uploaded_file($_FILES['fichier']['tmp_name'][$key], $dossier . $fichier)) //Si la fonction renvoie TRUE, c'est que ça a fonctionné...
    					{
    					//echo '<p align=center> Upload effectué avec succès ! <br>';
    					echo count(array_keys($upload_results[$fichier], true, true)) . " fichiers envoyés avec succès <br>";
    					$com = 'Cliquez ici pour télécharger le fichier';
    					echo '<a  href="'.$url.'">'.$com.'</a><br/>';
    					//Suppression fichier
    					//unlink( "upload/$fichier" );
    					}
    					else //Sinon (la fonction renvoie FALSE).
    					{
    					echo count(array_keys($upload_results[$fichier], false, true)) . " fichiers n'ont pas été envoyés";
    					echo 'Echec de l\'upload !';
    					}
    					}
    					else
    					{
    					echo $erreur;
    				}
    }
    }
    ?>
    Erreur : Warning: array_keys() expects parameter 1 to be array, boolean given in C:\wamp\www\Projet\upload.php on line 40

    Merci beaucoup de votre aide

  3. #23
    Membre averti Avatar de Nheo_
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2011
    Messages
    323
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2011
    Messages : 323
    Points : 416
    Points
    416
    Par défaut
    Bonjour,

    Dans tes deux array_keys($upload_results[$fichier], true, true), $upload_results[$fichier] n'est pas un tableau, essaye comme ceci : $upload_results.

  4. #24
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2011
    Messages
    124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2011
    Messages : 124
    Points : 34
    Points
    34
    Par défaut
    Mais $upload_results[$fichier] a été déclaré comme un array en haut du fichier...

  5. #25
    Membre averti Avatar de Nheo_
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2011
    Messages
    323
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2011
    Messages : 323
    Points : 416
    Points
    416
    Par défaut
    Citation Envoyé par Ercan67000 Voir le message
    Mais $upload_results[$fichier] a été déclaré comme un array en haut du fichier...
    Bien sur que non.
    $upload_results à été déclaré comme un tableau.
    $upload_results[$fichier] est donc une "cellule" de ce tableau.

  6. #26
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2011
    Messages
    124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2011
    Messages : 124
    Points : 34
    Points
    34
    Par défaut
    Lorsque j'enlève le [$fichier] le message apparait bien sans erreur mais il réapparait toujours 2,3 ou 4 fois selon le nombre d'uploads effectués..
    Si vous pouvez m'aider pour que le message ne s'affiche que une fois même si l'utilisateur upload 3 fichiers

    Merci de votre aide

  7. #27
    Membre averti Avatar de Nheo_
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2011
    Messages
    323
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2011
    Messages : 323
    Points : 416
    Points
    416
    Par défaut
    Les deux lignes suivantes
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    count(array_keys($upload_results, true, true))
    count(array_keys($upload_results, false, true))
    permettent d'afficher si les données dans ton tableau $upload_résults. Tu dois donc mettre ces deux lignes après l'upload de TOUS les fichiers.

  8. #28
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2011
    Messages
    124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2011
    Messages : 124
    Points : 34
    Points
    34
    Par défaut
    Les deux lignes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    echo count(array_keys($upload_results, true, true)) . " fichiers envoyés avec succès";
    echo count(array_keys($upload_results, false, true)) . " fichiers n'ont pas été envoyés";
    ont bien été placées à la fin de la boucle mais la page upload.php m'affiche comme résultat lorsque j'upload 2 fichiers :
    Cliquez ici pour télécharger le fichier
    Cliquez ici pour télécharger le fichier
    Vous devez uploader un fichier de type png, gif, jpg, jpeg, txt, doc, mp3 ou encore avi
    Vous devez uploader un fichier de type png, gif, jpg, jpeg, txt, doc, mp3 ou encore avi
    0 fichiers envoyés avec succès0 fichiers n'ont pas été envoyés

    Les deux premières lignes sont donc juste, juste la dernière ligne qui est erronée..

  9. #29
    Membre averti Avatar de Nheo_
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2011
    Messages
    323
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2011
    Messages : 323
    Points : 416
    Points
    416
    Par défaut
    Citation Envoyé par Ercan67000 Voir le message
    Les deux lignes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    echo count(array_keys($upload_results, true, true)) . " fichiers envoyés avec succès";
    echo count(array_keys($upload_results, false, true)) . " fichiers n'ont pas été envoyés";
    ont bien été placées à la fin de la boucle mais la page upload.php m'affiche comme résultat lorsque j'upload 2 fichiers :
    Cliquez ici pour télécharger le fichier
    Cliquez ici pour télécharger le fichier
    Vous devez uploader un fichier de type png, gif, jpg, jpeg, txt, doc, mp3 ou encore avi
    Vous devez uploader un fichier de type png, gif, jpg, jpeg, txt, doc, mp3 ou encore avi
    0 fichiers envoyés avec succès0 fichiers n'ont pas été envoyés

    Les deux premières lignes sont donc juste, juste la dernière ligne qui est erronée..
    Redonne moi le code complet s'il te plait.

  10. #30
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2011
    Messages
    124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2011
    Messages : 124
    Points : 34
    Points
    34
    Par défaut
    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
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
     
    <?php
    if (isset($_FILES["fichier"])) {	
                foreach ($_FILES["fichier"]["error"] as $key => $error) {   
    $dossier = 'upload/';
    $fichier = basename($_FILES['fichier']['name'][$key]);
    $taille_maxi = 20971520;
    $taille = filesize($_FILES['fichier']['tmp_name'][$key]);
    $extensions = array('.png', '.gif', '.jpg', '.jpeg', '.mp3', '.doc', '.docx', '.avi', '.txt', '.pdf');
    $extension = strtolower(strrchr($_FILES['fichier']['name'][$key], '.'));
    $upload_results = array();
    //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 png, gif, jpg, jpeg, txt, doc, mp3 ou encore avi<br>';
    		}
    			if($taille>$taille_maxi)
    			{
    			$erreur = 'Le fichier est trop volumineux';
    			}
    				if(!isset($erreur)) //S'il n'y a pas d'erreur, on upload
    				{
    				//On formate le nom du fichier ici...
    				$fichier = strtr($fichier,
    				'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ',
    				'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy');
    				$fichier = preg_replace('/([^.a-z0-9]+)/i', '-', $fichier);
    				$fichier = uniqId().$extension;
    				$tmp_name = $_FILES["fichier"]["tmp_name"][$key];
    				$url = 'http://localhost/Projet/upload/'.$fichier;
    					if($upload_results[$fichier] = move_uploaded_file($_FILES['fichier']['tmp_name'][$key], $dossier . $fichier)) //Si la fonction renvoie TRUE, c'est que ça a fonctionné...
    					{
    					//echo '<p align=center> Upload effectué avec succès ! <br>';
     
    					$com = 'Cliquez ici pour télécharger le fichier';
    					echo '<a  href="'.$url.'">'.$com.'</a><br/>';
    					//Suppression fichier
    					//unlink( "upload/$fichier" );
    					}
    					else //Sinon (la fonction renvoie FALSE).
    					{
    					echo 'Echec de l\'upload !';
    					}
    					}
    					else
    					{
    					echo $erreur;
    				}
    }
    echo count(array_keys($upload_results, true, true)) . " fichiers envoyés avec succès";
    echo count(array_keys($upload_results, false, true)) . " fichiers n'ont pas été envoyés";
    }
    ?>
    Et je voudrais donc que même si 3 uploads sont effectués il n'y est qu'un message qui s'affiche pour l'utilisateur et que si les troisième ou quatrième uploads n'ont pas été réalisées, je souhaiterais que : Vous devez uploader un fichier de type png, gif, jpg, jpeg, txt, doc, mp3 ou encore avi
    ne s'affiche pas.. Merci

  11. #31
    Membre averti Avatar de Nheo_
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2011
    Messages
    323
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2011
    Messages : 323
    Points : 416
    Points
    416
    Par défaut
    Je ne comprends pas, tu fais une gestion d'erreur, mais tu ne veux pas afficher l'erreur à l'utilisateur ?

  12. #32
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2011
    Messages
    124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2011
    Messages : 124
    Points : 34
    Points
    34
    Par défaut
    Si je veux que l'erreur d'extension s'afficher mais la je n'ai sélectionné que 2 fichiers avec un bon format et j'ai laissé deux input type="file" donc avec le bouton parcourir, vide. Et l'erreur s'affiche alors que ces deux inputs sont vides et la fonction count à la fin n'a pas l'air de marcher..

  13. #33
    Membre averti Avatar de Nheo_
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2011
    Messages
    323
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2011
    Messages : 323
    Points : 416
    Points
    416
    Par défaut
    Tu ne testes pas si ton fichier existe avant de faire les autres vérifications.

    Dans ta boucle foreach, tu peux faire un :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if($_FILES['fichier']['tmp_name'][$key])
    Si true => tu fais la suite.
    Si false => tu ne la fais pas.

    Je regarde pour l'autre problème.

  14. #34
    Membre averti Avatar de Nheo_
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2011
    Messages
    323
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2011
    Messages : 323
    Points : 416
    Points
    416
    Par défaut
    Avant les deux lignes suivantes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    echo count(array_keys($upload_results, true, true)) . " fichiers envoyés avec succès <br>";
    echo count(array_keys($upload_results, false, true)) . " fichiers n'ont pas été envoyés";
    Fais un print_r($upload_results); et dis moi le résultat.

  15. #35
    Expert éminent
    Avatar de Benjamin Delespierre
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    3 929
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2010
    Messages : 3 929
    Points : 7 762
    Points
    7 762
    Par défaut
    Je l'ai déjà dit mais c'est quelque chose que tu devrais faire par toi même, on ne peut pas continuellement t'aider à faire ce genre de choses ni te donner la solution toute faite.

    Si tu as des lacunes en PHP, je t'invite à consulter les tutoriaux proposés sur le forum comme celui ci.

    Pour ton problème, tu devrais songer à améliorer le mécanisme de gestion des erreurs pour prendre en compte tous les aspects qu'on peut rencontrer (format invalide, fichier trop gros ou impossibilité de déplacer le fichier).

    Tu peux faire ça avec des tableaux multi-dimentionnels (c'est à dire un tableau dont les cellules sont des tableaux) en utilisant les clés pour t'y retrouver.

  16. #36
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2011
    Messages
    124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2011
    Messages : 124
    Points : 34
    Points
    34
    Par défaut
    Le résultat de print_r est : Array ( ) 0 fichiers envoyés avec succès0 fichiers n'ont pas été envoyés

    Oui je lit actuellement des documentations php mais je ne peux pas aller plus vite que le temps..Désolé

    Et merci de votre aide

  17. #37
    Membre averti Avatar de Nheo_
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2011
    Messages
    323
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2011
    Messages : 323
    Points : 416
    Points
    416
    Par défaut
    Citation Envoyé par Ercan67000 Voir le message
    Le résultat de print_r est : Array ( ) 0 fichiers envoyés avec succès0 fichiers n'ont pas été envoyés

    Oui je lit actuellement des documentations php mais je ne peux pas aller plus vite que le temps..Désolé

    Et merci de votre aide
    Refais avec un var_dump($upload_results);

  18. #38
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2011
    Messages
    124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2011
    Messages : 124
    Points : 34
    Points
    34
    Par défaut
    Le résultat est : array
    empty

  19. #39
    Expert éminent
    Avatar de Benjamin Delespierre
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    3 929
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2010
    Messages : 3 929
    Points : 7 762
    Points
    7 762
    Par défaut
    Ce qui est normal vu qu'il ne passe pas sur le move_upladed_file.
    C'est pour ça que tu dois étendre ton mécanisme d'erreur comme je l'ai mentionné plus haut afin que toutes les erreurs soient rapportées dans une seule structure.

  20. #40
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2011
    Messages
    124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2011
    Messages : 124
    Points : 34
    Points
    34
    Par défaut
    Le mécanisme d'erreur est suffisant pour mon utilisation (extension, taille).. Pouvez-vous juste m'aider pour que le fichier n'affiche plus "Vous devez uploader un fichier de type png, gif, jpg, jpeg, txt, doc, mp3 ou encore avi" alors qu'aucun fichier n'a été uploadé.

    Merci

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 4 PremièrePremière 1234 DernièreDernière

Discussions similaires

  1. [1.3.5] Probleme multi upload
    Par hellipse dans le forum Struts 1
    Réponses: 0
    Dernier message: 21/08/2008, 15h32
  2. Probleme d'upload
    Par FreshVic dans le forum Struts 1
    Réponses: 10
    Dernier message: 22/05/2006, 17h15
  3. [JSP] Problème d'upload de fichiers
    Par Ludo_xml dans le forum Servlets/JSP
    Réponses: 4
    Dernier message: 07/09/2005, 11h20
  4. [uploadfile] - Probleme pour upload
    Par ShinJava dans le forum Servlets/JSP
    Réponses: 4
    Dernier message: 13/07/2005, 12h28
  5. [Upload] probleme d upload de fichier
    Par Stef784ever dans le forum Langage
    Réponses: 7
    Dernier message: 09/05/2005, 17h45

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