enregistrer un fichier

jib2b
Invité n'ayant pas de compte PHPfrance

05 juil. 2006, 13:23

Salut,

je suis en train de faire un intranet ou je permet l'echange d'informations entre membres. Genre une messagerie. Et je dois faire en sorte qu'ils puissent echanger des fichiers. j'ai tout fait, sauf que je ne sais plus comment en php ou enregistre les fichiers echangés. En gros, il y a un repertoire "messages" à la racine et dans ce repertoire il y a un repertoire qui est propre à chaque personne et je voudrais que les fichiers echangés soient enregistrés dans le bon repertoire.

engros si dupont envoie un message a bernard avec le fichier essai.txt,
je voudrais avoir ceci:
/messages/bernard/dupond_ladateEnvoi_essai.txt

ps: j'arrive bien a changer le nom du fichier, a me positionner dans le bon repertoire mais je ne sais plus comment on enregistre le fichier.


Merci.

Invité
Invité n'ayant pas de compte PHPfrance

05 juil. 2006, 13:45

j'ai testé avec ceci mais j'ai un message d'erreur.

$rep='/mail/';
echo $rep;
//chdir($rep);
copy($fichiernom,$rep);

/mail/
Warning: copy(jib3b_CVJB.doc): failed to open stream: No such file or directory in /www/sites/1/ifrance.com/contact2.php on line 44

jib2b
Invité n'ayant pas de compte PHPfrance

05 juil. 2006, 16:14

alors j'ai essayer certain truc et je n'arrive tjs pas à enregistrer le fichier dans le dossier.

voici mon code si vous pouvez me dire ce qu'il faut que je modifie.

Code : Tout sélectionner

$message=$_POST['mess']; $destinataire=$_POST['destinataire']; $subject=$_POST['subject']; $fichiernom=$_FILES['fichier']["name"]; if (is_uploaded_file($_FILES["fichier"]["tmp_name"])) { // recupération de l'extension du fichier // autrement dit tout ce qu'il y a après le dernier point (inclus) $fichiernom = $_FILES["fichier"]["name"]; $extension = substr($fichiernom, strrpos($fichiernom, ".")); // Contrôle de l'extension du fichier if (eregi("^ph", $extension)) { die("Les fichiers en .ph* ne sont pas autorisés."); $extension="txt"; } else $extension=" "; $fichiernom = $destinataire . '_'.$fichiernom . $extension; //enregistrement du fichier dans un repaertoire propre au destinataire. $rep='./mail/'; $dir=$rep.$destinataire; $dir2 = opendir($dir); echo 'repertoire '; echo $dir; while ($f = readdir($dir2)) { if(strcmp($f,$fichiernom)) { copy($fichiernom,$dir2); }
message obtenu :

repertoire ./mail/jib3b
Warning: copy(jib3b_bienvenue.swf ): failed to open stream: No such file or directory in /www/sites/site1/contact2.php on line 50

Merci

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

05 juil. 2006, 16:34

la fonction copy() prend en argument la source et la destination du fichier que tu veux copier. Ces deux éléments correspondent au noms des fichiers mais également aux chemins qui permettent de les trouver et de les copier...

Quoi qu'il en soit, dans la mesure où il s'agit d'un fichié uploadé via un formulaire, il te faut utiliser la fonction move_uploaded_file() pour déplacer le fichier chargé du dossier temporaire dans lequel il se trouve (sans avoir besoin de le connaitre ou de le spécifier), vers le dossier de ton choix avec le nom de ton choix :)

(à noter dans le nom de ton fichier tu a oublié de remettre le point avant l'extension ;))

jib2b
Invité n'ayant pas de compte PHPfrance

05 juil. 2006, 16:47

Salut,

merci pour la reponse, pourtant, le repertoire est tjs vide. J'ai changé les droits des dossiers par le ftp mais y a tjs rien.