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 :

Création de dossier (mkdir) après envoi (form type=file)


Sujet :

Langage PHP

  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2013
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Distribution

    Informations forums :
    Inscription : Février 2013
    Messages : 11
    Points : 4
    Points
    4
    Par défaut Création de dossier (mkdir) après envoi (form type=file)
    Bonjour,

    je rencontre un problème lors de la création d'un fichier pour l'upload d'un fichier.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    $obj = new upload('uploads/$sousdossier1/$sousdossier2/$sousdossier3/$sousdossier4/$sousdossier5/', 'MON_FICHIER_A_ENVOYER');
    if(!is_dir($sousdossier1)){mkdir("uploads/$sousdossier1/",0777);}
    if(!is_dir($sousdossier2)){mkdir("uploads/$sousdossier1/$sousdossier2/",0777);}
    if(!is_dir($sousdossier3)){mkdir("uploads/$sousdossier1/$sousdossier2/$sousdossier3/",0777);}
    if(!is_dir($sousdossier4)){mkdir("uploads/$sousdossier1/$sousdossier2/$sousdossier3/$sousdossier4/",0777);}
    if(!is_dir($sousdossier5)){mkdir("uploads/$sousdossier1/$sousdossier2/$sousdossier3/$sousdossier4/$sousdossier5/",0777);}
    Je précise que les variables ont été traitées et qu'elles ne contiennent plus ni accents, ni espaces, ni '.

    Les 4 premiers sous dossiers sont crées mais pas le cinquième et j'ai l'erreur suivante :
    Le répertoire où doit être envoyé le fichier n'existe pas.

    Les dossiers crées ont un CHMOD de 755 (ce qui est déjà un problème).

    Lors d'un envoi ultérieur l'erreur suivante apparait comme si le "!isdir" n'était pas considéré :
    Warning: mkdir() [function.mkdir]: File exists in ...

    Je suis un peu perdu avec ce problème... d'avance merci de vos conseils

  2. #2
    Membre expert
    Avatar de Spartacusply
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2011
    Messages
    1 723
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

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

    Informations forums :
    Inscription : Mai 2011
    Messages : 1 723
    Points : 3 275
    Points
    3 275
    Par défaut
    Ta fonction est clairement simplifiable avec l'utilisation de l'option "recursive" de la fonction mkdir.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    $dossier = "uploads/$sousdossier1/$sousdossier2/$sousdossier3/$sousdossier4/$sousdossier5";
    if (!is_dir($dossier)) {
          mkdir($dossier,0777,true); // paramètre recursive à true
          if (!is_dir($dossier)) {
    	   echo "une erreur s'est produite");
               exit;
    	}
    }
    Un message utile vous a aidé ? N'oubliez pas le

    www.simplifions.fr - Simplifier vos comptes entre amis !

  3. #3
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2013
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Distribution

    Informations forums :
    Inscription : Février 2013
    Messages : 11
    Points : 4
    Points
    4
    Par défaut
    Merci beaucoup.

    En effet cela simplifie énormément mon script (juste une fin de parenthèse en trop et ça l'a fait).

    En revanche ; toujours le même message d'erreur qui m'indique que le répertoire n'existe pas.
    Cette fois tous les dossiers sont bien crées mais en CHMOD 2755 (avec comme propriétaire httpd, je ne sais pas si cela a une importance).

    Je remet mon code actuel :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    $dossier = "sousdossier1/$sousdossier2/$sousdossier3/$sousdossier4/$sousdossier5/$sousdossier6";
    if (!is_dir($dossier)) {
    mkdir($dossier,0777,true); // paramètre recursive à true
    if (!is_dir($dossier)){
    echo "une erreur s'est produite";
    exit;}}
    $obj = new upload('$dossier/', 'MON_FICHIER_A_ENVOYER');
    Mes variables n'ont toujours pas d'accents, espaces ou guillemets (les dossiers crées reprennent les variables comme prévu).

    Existe-t-il un moyen de récupérer dans une variable le chemin ou le fichier a voulu aller histoire de comparer? ça me sera également utile car j'aimerai stocker l'URL dans une base de donnée par la suite.


    Merci.

  4. #4
    Membre expert
    Avatar de Spartacusply
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2011
    Messages
    1 723
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

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

    Informations forums :
    Inscription : Mai 2011
    Messages : 1 723
    Points : 3 275
    Points
    3 275
    Un message utile vous a aidé ? N'oubliez pas le

    www.simplifions.fr - Simplifier vos comptes entre amis !

  5. #5
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2013
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Distribution

    Informations forums :
    Inscription : Février 2013
    Messages : 11
    Points : 4
    Points
    4
    Par défaut
    A question idiote réponse moins idiote.... mdr. Merci de m'avoir mis face à ma débilité XD.


    Alors le chemin est le bon et les dossiers sont crées, mais toujours : Le répertoire où doit être envoyé le fichier n'existe pas.

    J'ai à nouveau changer le CHMOD de chaque dossier à 0777 manuellement depuis le ftp (puis changer le propriétaire des dossiers) et essayer de renvoyer un document mais toujours pareil.


Discussions similaires

  1. [AJAX] Envoi des types file en plus des post
    Par tiamat59 dans le forum jQuery
    Réponses: 2
    Dernier message: 15/07/2014, 16h31
  2. Mise en forme après envois d'un mail.
    Par Vengil dans le forum Word
    Réponses: 4
    Dernier message: 19/09/2008, 15h42
  3. Création de dossier avec mkdir
    Par snaxisnake dans le forum Langage
    Réponses: 4
    Dernier message: 26/02/2008, 19h27
  4. préremplir un form struts après envoi en base
    Par rherrad dans le forum Struts 1
    Réponses: 2
    Dernier message: 17/08/2007, 18h14
  5. Réponses: 1
    Dernier message: 30/12/2006, 11h14

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