Recuperer chemin complet d'un fichier en php [Fermé]

Signaler
Messages postés
77
Date d'inscription
mardi 11 octobre 2011
Statut
Membre
Dernière intervention
23 avril 2012
-
 Utilisateur anonyme -
Bonjour,
SVP, je cherche comment recuperer le chemin complet d'un fichier en php,
avec l'instruction $_files['monfichier']['name'] me donne juste le nom du fichier!

je travail sur une application qui permet au utilisateur d'uploader des images puis de pouvoir les consulter ultérieurement, pour ce faire, je dois copier le fichier de son chemin intial physique vers mon serveur(dont je doit creer un dossier pour mettre toutes les images).
Je ne sais pas si ma comprehention et analyse sont justes ou non!

Aidez moi SVP
d'avance MERCI

5 réponses

Messages postés
77
Date d'inscription
mardi 11 octobre 2011
Statut
Membre
Dernière intervention
23 avril 2012

quelqu'un me repond SVPPP
je suis bloqué
Bonjour

$_FILES['monfichier']['name'] te donne juste le nom du fichier et ne te donnera jamais le chemin complet, mais ça n'a aucune importance, il ne te servirait à rien. Ton script tourne sur un serveur HTTP alors que ton fichier se trouve sur le PC de ton client : le serveur ne peut pas lire dans le PC du client et heureusement !

Quand tu envoies un fichier par POST, il est recopié dans le serveur et tu retrouves la copie dans un répertoire temporaire. Tu peux le recopier ailleurs pour le garder avec la fonction move_uploaded_file. Regarde le chapitre consacré au téléchargement dans la doc PHP, ce n'est pas compliqué :

http://www.php.net/manual/fr/features.file-upload.post-method.php
Messages postés
77
Date d'inscription
mardi 11 octobre 2011
Statut
Membre
Dernière intervention
23 avril 2012

Merci bien Le père,
CeCi m'aide beaucoup,
il me reste encore une autre ambiguité; lorsque je teste localement mon programme php
et je viens de uploader un fichier à partir de mon disque, il prend en consideration que les images existant dans le répertoire parent c à d sous c:/wamp/www/monProjet.
il fait l'affichage que des images existant ici et les autres non!

Comment ça marche?
Merci encore
Peux-tu faire voir ton script ?
Messages postés
77
Date d'inscription
mardi 11 octobre 2011
Statut
Membre
Dernière intervention
23 avril 2012

OK,
*********Ce que j'ai dans la page html*********

<form name="h1" action="comptepub.php" method="post" enctype="multipart/form-data">
<input name="fichier" type="file" />
<input type="text" name="pubtext" size="30"/>
<input type="submit" value="publier"/>
</form>

*********Ce que j'ai dans la page php*********

<?php
$dd=$_POST['pubtext'];
$f=date('Y-m-d-H-m-s');
$ddd=$_FILES['fichier']['name'];
/*$chemin=$_FILES['fichier']['tmp_name'];
opendir("C:\wamp\www\poc\publication");
copy($chemin,"C:\wamp\www\poc\publication\'$ddd'");*/
include("connect.php");
ma_connection();
if ($dd != "")
{
$sql = " insert into publication values ('','$dd','','$f','$_SESSION[id]')";
$result = mysql_query($sql) or die("Requete pas comprise ".mysql_error());
$sql="select * from publication where identifiant = '$_SESSION[id]' order by idpub desc";
$result = mysql_query($sql) or die("Requete pas comprise".mysql_error());
echo "vous avez ".mysql_num_rows($result)." publication(s)<br>";
while ($enreg=mysql_fetch_array($result))
{
if ($enreg['1'] != "")
echo "<h3>".$enreg['1']."</h3><h4>Date:".$enreg[3]."</h4><hr><br>";
else
echo "<h3><img src=".$enreg[2]." height=100 width=150 /></h3><h4>Date:".$enreg[3]." </h4><hr><br>";
}
}
else if ($ddd != "")
{
$sql = " insert into publication values ('','','$ddd','$f','$_SESSION[id]')";
$result = mysql_query($sql) or die("Requete pas comprise ".mysql_error());
$sql="select * from publication where identifiant = '$_SESSION[id]' order by idpub desc";
$result = mysql_query($sql) or die("Requete pas comprise".mysql_error());
echo "vous avez ".mysql_num_rows($result)." publication(s)<br>";
while ($enreg=mysql_fetch_array($result))
{
if ($enreg['1'] != "")
echo "<h3>".$enreg['1']."</h3><h4>Date:".$enreg[3]."</h4><hr><br>";
else
echo "<h3><img src=".$enreg[2]." height=100 width=150 /></h3><h4>Date:".$enreg[3] ."</h4><hr><br>";
}
}
else
echo "<script> alert(\"vous n avez pas insere aucun contenu pour une publication\")</script>";

?>
echo realpath("tonfichier")
Je me demande à quoi est censé servir ton script.
Il n'enregistre en aucun cas les images téléchargées, je ne vois pas le move_uploaded_file qui est indispensable et qui figure dans les explications dans le lien que je t'ai envoyé.
Tout ce que tu enregistres dans le champ 2 de ta base, c'est le nom d'un fichier (un simple mot, donc).
Tu t'en sers pour créer un champ src d'une balise img, cela ne va marcher que s'il y a un fichier avec le même nom dans le répertoire qui contient ton script. C'est le cas uniquement si tu travailles en local et avec les images qui sont dans le répertoire de ton script. Quand ton site sera hébergé, tu demanderas à ton serveur d'afficher des images qu'il n'a jamais enregistrées, ça ne marchera plus du tout.

Je résume les opérations à faire :
1 - Vérifier que la réception a été ok avec $_FILES['fichier']['error']
2 - Sauvegarder le fichier reçu avec move_uploaded_file($_FILES['fichier']['tmp_name'],$destination);
$destination est le chemin+nom de fichier où tu vas ranger ton image.
Pour le chemin, tu prends celui que tu veux, pourvu qu'il soit accessible par HTTP quand tu voudras créer un lien dessus pour afficher l'image
Pour le nom, tu peux prendre $_FILES['fichier']['name'] mais ce n'est pas forcément une bonne idée. Que se passe-t-il si deux personnes téléchargent une image avec le même nom ? Il est peut-être plus prudent soit de tirer un nom au hasard avec uniqid(), soit de compléter le nom d'origine avec la date et l'heure ou toute autre astuce pour éviter d'avoir des collisions de noms.
3 - mémoriser dans ta base sous quel nom tu as rangé l'image

4 - ensuite, pour faire afficher l'image dans une balise <img, ne pas oublier de mettre le répertoire dans l'attribut src pour aller chercher l'image là où elle est réellement.

Je déterre ce sujet, car je suis dans le même soucis.
C'est pour l'intranet (donc localement), et les liens fonctionneront.
Comment récupérer le chemin complet d'un fichier via parcourir ?