Récuperer le chemin d'un fichier.

Eléphanteau du PHP | 19 Messages

24 mars 2009, 16:21

Bonjour,

Comme le sujet l'indique je voudrais récupérer le chemin absolu du fichier.
La fonction $_FILES['Rep_Fic'][tmp_name] me récupére le chemin temporaire, je voudrais son vrai chemin.

Code : Tout sélectionner

<input name="chemin" type="hidden" id="chemin" /> <input type="file" name="Rep_Fic" onchange="document.getElementById('chemin')=this.value"> <input type=submit value="Ajouter" onclick='envoie(this.form)'>
Pour votre aide merci.

Eléphant du PHP | 141 Messages

24 mars 2009, 16:47

il faut que tu copie le fichier temporaire à l'endroit où tu veux le stocker.
Tu peux utiliser la fonction move_uploaded_file()

Eléphanteau du PHP | 19 Messages

25 mars 2009, 10:02

Je veux bien utiliser la fonction move_uploaded_file() mais il y a des restrictions dessus.
Je ne peux pas Uploaded n'importe quel fichier de mon ordinateur.

'move_uploaded_file permet de s'assurer de la sécurité de cette opération en autorisant le déplacement des seuls fichiers chargés via PHP.'

Je ne peux pas uploaded les fichiers .doc , .jpg. Du moins mon problème est ici.
Est-il possible de lever cette restriction.
Sinon existe-il une autre solution?

Eléphant du PHP | 141 Messages

25 mars 2009, 10:47

Oui, dans ton formulaire tu as bien un champ file ?
C'est lui qui te permet d'aller chercher un fichier sur ton ordinateur. Et quand tu soumet le formulaire, il est téléchargé temporairement sur le serveur, et son chemin est spécifié par $_FILES['Rep_Fic']['tmp_name']
Là tu utilises move_uploaded_file() pour copier ce fichier temporaire vers la destination de ton choix.

Tu pourrais utiliser copy() également mais parce que 'move_uploaded_file permet de s'assurer de la sécurité de cette opération en autorisant le déplacement des seuls fichiers chargés via PHP.' tu es sûr que tu copies un fichier provenant de ton formulaire.

Attention ! Quand tu veux faire le l'upload de fichiers via formulaire, tu dois spécifier l'attribut enctype dans ta balise form.

Code : Tout sélectionner

<form name="monForm" enctype="multipart/form-data" action="page.php">

Invité
Invité n'ayant pas de compte PHPfrance

25 mars 2009, 11:51

Merci pour ton aide.

J'ai trouvé mon erreur celà venait du fichier de configuration php.ini au niveau de l'upload de fichier.

Par contre si quelqu'un a une réponse pour récupérer le chemin du fichier je suis preneur.

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

25 mars 2009, 12:05

Quand tu dis "le chemin du fichier" tu parles de l'emplacement où se trouvait le fichier sur le poste client ou sur le réseau de l'utilisateur au moment de l'upload ?

Si tel est le cas, alors non, tu ne peux pas le connaitre (ce qui a d'ailleurs un côté rassurant). La question est ensuite de savoir pourquoi tu en as besoin, dans la mesure où tu ne pourras de toute façon pas l'utiliser pour pré-renseigner un champ de type file (ce qui est d'autant plus rassurant) et que au final, l'emplacement initial du fichier, on s'en moque peut être un peu dès lors que maintenant il est sur le serveur ? ;)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Eléphant du PHP | 141 Messages

25 mars 2009, 12:47

Pourquoi tu veux absolument récupérer le chemin du fichier uploadé ?
Dans le morceau de HTML que tu nous a fourni, tu as un champ caché "chemin". Il te sert à quoi celui là ?
Si c'est juste pour l'upload tu n'en a pas besoin, car c'est PHP qui gère l'upload.

Au moment où ton formulaire est soumis, le fichier est directement uploadé sur le serveur, donc tu n'a plus qu'à le copier depuis le répertoire temporaire vers le répertoire où tu veux qu'il soit stocké.

Un petit exemple :
<?php
// vérification qu'un fichier à été spécifié
if (!empty($_FILES['fichier']['tmp_name'])) {
    // Là on copie le fichier temporaire, et on l'enregistre dans le dossier mesUploads/ sous le même nom qu'il avait sur le poste du client
    move_uploaded_file($_FILES['fichier']['tmp_name'], "mesUploads/".$_FILES['fichier']['name']);
}
?>
<form name="monForm" enctype="multipart/form-data" action="page.php">
    <input type="file" name="fichier" value="" />
    <input type="submit" name="valid" value="envoyer" />
</form>
T'as pas besoin de plus normalement.

Invité
Invité n'ayant pas de compte PHPfrance

25 mars 2009, 13:26

J'arrive bien à Uploader le fichier.
Mais si quelqu'un modif le fichier original je suis obligé de le recharger.
C'est pour celà que j'aurais préféré avoir le chemin original du fichier.
Je fais en faite une base de données de fichier pour qu'il soit disponible en intranet.