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 de fichiers par formulaire


Sujet :

Langage PHP

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2014
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2014
    Messages : 18
    Points : 8
    Points
    8
    Par défaut Upload de fichiers par formulaire
    Salut à tous. Toujours sur le developppement de mon site, j'ai élaboré un système d'upload de fichiers pour permettre à mes utilisateurs de poster des fichiers.
    J'ai déjà un dossier où vont tous les fichiers uploadé (mais j'avoue que cela n'est vraiment pas pratique).
    Alors je souhaiterais à présent pour éviter que des utilisateurs ne puissent poster des fichiers de même nom (auquel cas l'un des fichiers serait écrasé) créer un dossier pour chaque membre de mon site afin que celui-ci poste en toute tranquilité ses fichiers.
    Du coup,je ne sais pas comment faire.Quelqu'un peut-il m'aider à ce niveau?

  2. #2
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    Lorsque ton utilisateur cherche à créer un ficheir, tu vérifies d'abord si son dossier existe avec file_​exists. Si il n'existe pas, tu le crées avec mkdir.
    Et ensuite, tu crées ton fichier normalement.
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2014
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2014
    Messages : 18
    Points : 8
    Points
    8
    Par défaut
    Justement Célira, comment faire pour créer un dossier pour chaque membre de mon site lors de l'upload. Autrement dit,pourrais-tu me donner le code qui puisse me permettre de le faire.

  4. #4
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    Quel est ton code actuel d'upload ?
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2014
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2014
    Messages : 18
    Points : 8
    Points
    8
    Par défaut
    Le voilà.comme tu me l'as conseillé,j'ai éssayé avec "mkdir".Le dossier se crée mais le fichier n'y est pas uploadé.
    Voici mon 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
    <?php
     
    if(isset($_POST['etape_2']))
    {
    	$fichier = $_FILES['app']['name'];
    	$taille_maximale = 2097152;
    	$taille = filesize($_FILES['app']['tmp_name']);
    	$extensions = array('.jpeg', '.apk', '.ipa', '.xap', '.APK', '.IPA', '.XAP');
    	$extension = strrchr($fichier, '.');
     
    	if(!in_array($extension, $extensions))
    	{
    		$erreur = 'Format du fichier incorrect.<br/>Formats pris en charge: apk/ipa/xap.<br/><a href="upload_app1.php">Retour à l\étape</a>';
    	}
    	if ($taille>$taille_maximale)
    	{
    		$erreur = 'Fichier trop volumineux.<br/>Taille maximale: 2Go <br/><a href="upload_app1.php">Retour à l\étape</a>';
    	}
     
    	$chemin = 'applications/apps';
     
    	if(file_exists($chemin))
    	{
     
    	}else
    	{
     
    		mkdir($chemin,true);
     
    		if(!mkdir($chemin, true))
    		{
    			$erreur = 'Echec lors de la création de répertoires...';
    		}
    	}
     
    	if(!isset($erreur))
    	{
    		$fichier = preg_replace('/([^.a-z0-9]+)/i','-',$fichier);
    		move_uploaded_file($_FILES['app']['tmp_name'],mkdir.$fichier);
    		header('Location:upload_app2.php');
    	}
    	else{
    		echo $erreur;
    	}
    }
     
    ?>

  6. #6
    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 : 53
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 418
    Points
    91 418
    Billets dans le blog
    20
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    mkdir($chemin,true);
    if(!mkdir($chemin, true)){
    	$erreur = 'Echec lors de la création de répertoires...';
    }
    Ton code est incohérent...
    Tu commences par créer le répertoire et ensuite, tu testes si tu arrives à le créer. Comment veux-tu pouvoir réussir à créer deux fois le même répertoire ?
    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

  7. #7
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2014
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2014
    Messages : 18
    Points : 8
    Points
    8
    Par défaut
    Alors,s'il te plaît,comment dois-je m'y prendre?
    Parce que ce que je veux,c'est ceci:
    Monsieur X veut uploader un fichier.Il rempli le formulaire et upload son fichier dans un dossier "x" qui lui est destiné où il pourra ainsi uploadé tous ses autres fichiers plus tard.
    Si un autre inscrit (Monsieur Y) veut uploadé un fichier et qu'il remplit le formulaire,il upload le fichier dans un dossier "y" de sorte qu'à chaque fois qu'il veut uploadé un fichier, ses fichiers soit placés uniquement dans le dossier "y".
    Cela me permettra de créer un dossier pour chaque inscrit lorsque celui-ci voudra uploader un fichier.Par la suite, à chaque fois qu'il uploadera un fichier,ce fichier ira dans le dossier qui est propre pour l'inscrit.

  8. #8
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    avec un seul appel à mkdir :
    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
    if(!file_exists($chemin))
    {
    	if(!mkdir($chemin, true))
    	{
    		$erreur = 'Echec lors de la création de répertoires...';
    	}
    }
     
    if(!isset($erreur))
    {
    	$fichier = preg_replace('/([^.a-z0-9]+)/i','-',$fichier);
    	move_uploaded_file($_FILES['app']['tmp_name'],mkdir.$fichier);
    	header('Location:upload_app2.php');
    }
    else{
    	echo $erreur;
    }
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  9. #9
    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
    Salut,

    Et puis il y a d'autres erreurs, le second paramètre de "move_uploaded_file" doit être la destination du fichier. Suivant les cas ce sera $chemin.$fichier ou $chemin.'/'.$fichier et non pas mkdir.$fichier.

    Après faudrait voir à éviter que le visiteur puisse charger n'importe quoi sur le serveur, donc faire le tri au minimum sur les extensions des fichiers. Et normalement prévoir aussi des messages d'information en cas d'erreurs (fichiers trop gros, etc.).
    Si besoin une classe complète d'upload qui sait gérer cela facilement.

  10. #10
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2014
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2014
    Messages : 18
    Points : 8
    Points
    8
    Par défaut
    Merci à vous, je vais essayer toutes vos propositions.

  11. #11
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2014
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2014
    Messages : 18
    Points : 8
    Points
    8
    Par défaut
    Merci à vous tous (Celira ;Bovino et Alain Bontemps).

    Juste une dernière question Alain Bontemps.
    Le serveur permet l'upload avec un poids maximal à 8M.
    Comment faire pour changer cela pour arriver à télécharger un fichier de 2Go par exemple.

  12. #12
    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
    Salut,

    Pour les gros fichiers qui dépassent la configuration serveur, soit tu modifies la configuration du serveur, soit tu peux utiliser cette autre classe ici
    Elle permet de plus d'interrompre puis de reprendre un téléchargement. Par contre contrairement à l'autre classe, celle-ci n'est compatible qu'avec les navigateurs récents, et côté php je n'ai pas implémenté pour l'instant de contrôle des extensions (il faudra rajouter un contrôle des extensions côté php si tout le monde peut avoir accès à ton module de téléchargement, mais c'est facile ).

  13. #13
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2014
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2014
    Messages : 18
    Points : 8
    Points
    8
    Par défaut
    D'accord.un grand merci d'avance!

  14. #14
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2014
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2014
    Messages : 18
    Points : 8
    Points
    8
    Par défaut
    Merci Alain,mais côté contrôle des extensions et renommage des fichiers uploadés,je coince un peu (en ce qui concerne l'upload de gros fichiers).
    T'as dit que c'était facile,mais pour un débutant en php comme moi,cela est une autre paire de manche!
    J'ai essayé mais je n'y suis pas arrivé.
    je voudrais autoriser des fichiers de formats "apk","xpa" et "ipa" et renommer les fichiers uploadés.
    Peux-tu m'aider sur ce point?
    Merci d'avance

  15. #15
    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
    Quelle version de php utilises-tu ? php >= 5.2 ?

    Tu veux renommer les fichiers comment ? En gardant le nom du fichier et en ajoutant un suffixe unique ?

  16. #16
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2014
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2014
    Messages : 18
    Points : 8
    Points
    8
    Par défaut
    Oui, j'utilise une version php>5.2.
    Effectivement, je veux renommer les fichiers en gardant le nom d'origine et en ajoutant un suffixe unique comme par exemple jeux_1.apk;jeux_2.apk;jeux_3.apk...

  17. #17
    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
    Salut,

    J'avais pas le temps de te répondre. Du travail et puis je me suis dit que j'allais en profiter pour mettre la classe à jour pour intégrer plus de fonctionnalités côté php et côté html lister les fichiers avant l'envoi du formulaire. Ce sera fait vers le début de la semaine prochaine, je t'enverrai un message quand ce sera dispo.

    A+

  18. #18
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2014
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2014
    Messages : 18
    Points : 8
    Points
    8
    Par défaut
    D'accord merci d'avance.

  19. #19
    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
    Salut,

    Et voilà la nouvelle version 1.7 en ligne

    Voir aussi ici

    Attention tous les fichiers sont solidaires (ne pas mélanger avec les anciens fichier de l'ancienne version).


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

Discussions similaires

  1. APACHE et l'upload de fichier par formulaire
    Par dskkk dans le forum Apache
    Réponses: 4
    Dernier message: 28/06/2012, 13h24
  2. APACHE et l'upload de fichier par formulaire
    Par dskkk dans le forum Langage
    Réponses: 1
    Dernier message: 27/06/2012, 09h39
  3. Erreur lors de l'upload d'un fichier par formulaire
    Par loukoum82 dans le forum Tomcat et TomEE
    Réponses: 2
    Dernier message: 06/10/2008, 09h45
  4. [Upload] Upload de fichier par formulaire
    Par discogarden dans le forum Langage
    Réponses: 4
    Dernier message: 31/03/2006, 19h17
  5. Upload de fichier par XMLHTTP
    Par Immobilis dans le forum ASP
    Réponses: 6
    Dernier message: 21/01/2005, 17h02

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