KioskeaKioskeaCommentCaMarcheInscrivez-vous, c'est gratuit !
Vendredi 16 mai 2008 - 06:30:48

[php] récupérer le chemin du fichier

Rechercher : dans
[php] récupérer le chemin du fichier
par toto
 Fil de Discussions
Statut : Non résolu
mardi 16 août 2005 à 11:54:11
Bonjour à tous,
Voilà, je voudrais récuperer le chemin d'un fichier de puis ce formulaire:
<html><head></head>
<body>
<form action="execute.php" method=post>
<input name="machin" type=file>
</form>
</body></html>
et puis d'ouvrir le fichier spécifié avec le script suivant:
<?
if (isset($_post['machin'])) $fichier=$_post['machin'];
$open=fopen($fichier);
?>

mais il y a toujours un message "Warning: fopen() expects at least 2 parameters" ...
je ne sais pas comment je peut récupérer le chemin complet du fichier choisi. est-ce avec la fonction realpath()?

y a t-il quelqu'1 qui peut m'aider ? merci beaucoup d'avance!
Configuration: windows2000 sp4 
Easyphp1.8
Répondre à toto  Signaler ce message aux modérateurs Aller au dernier message

1


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Par jisisv, le mardi 16 août 2005 à 12:12:43 Fil de Discussions
Toutes les informations sur le chargement des fichiers se trouve ici
http://php.easynet.be/manual/fr/features.file-upload.php

Notons que fopen demande effectivement un second argument:
http://php.easynet.be/manual/fr/function.fopen.php

Johan Gates gave you the windows.
GNU gave us the whole house.(Alexandrin)
Répondre à jisisv

2


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Par ceddec, le mardi 16 août 2005 à 13:20:40 Fil de Discussions
Bonjour,

en fait, il est impossible de récupérer le chemin complet. Tu peux uploader le ficiher sur le serveur sans problème mais tu n'auras pas le chemin complet.
Voici le fonctionnement de l'upload :

1 - tu choisi le fichier à uploader (avec un
<input type="file" name="fichier">
)
2 - un fichier temporaire sera créé sur le serveur. La page qui reçoit le formulaire pourra connaitre le nom avec $
_FILES['fichier']['tmp_name']

3 - pour finir l'upload utilise la commande
rename($_FILES['fichier']['tmp_name'],  $_FILES['fichier']['name']) 
et normalement le fichier sera uploadé au même endroit que le script qui recoit le formulaire (c'est un exemple, tu peux l'uploader où tu veux)

Bon courage
Répondre à ceddec

3


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Par toto, le mardi 16 août 2005 à 17:24:12 Fil de Discussions
Salut, je te remercie beaucoup!
j'ai une autre question, comment peut-on créer un fichier temporaire sous php?
ce que je voulais faire c'est de corriger quelques fautes dans mon fichier, par exemple, j'ai un fichier text.txt et dedans il y a un ligne : "Goudin;st,phanie"
et je veux que chaque fois que l'on rencontre une virgule on la remplace avec un "é", donc j'ai écrit un script suivant:
<?
fichier = "C:\Documents and Settings\Administrateur\Bureau\best.txt" ;
$open=fopen($fichier,"r+") or die ("impossible d'ouvrir le fichier!");
print ("le fichier est ouvert!<br>");
while (!feof($open))
{
$lire_ligne=fgets($open,255);
$extrait=explode(";",$lire_ligne); //chaque fois que l'on
rencontre un ; faire
$nom=$extrait[0]; //récuperer le nom
$prenom=$extrait[1]; //récuperer le prénom
$anal_pre=explode(",",$prenom); //dans le prénom si on
rencontre une" ," alors
$consti=emplode("é",$prenom);

}
fclose($open);
?>
mais il y a toujours une erreur " Undefined offset: 1" je ne sais pas pourquoi?!
et j'ai pensé que peut-etre si on crée un fichier temporaire pour pouvoir mettre la valeur de $prenom et après de travailler sur ce fichier....
S'il y a quelqu'un a une idée pour moi?! merci beaucoup d'avance !
Répondre à toto

4


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Par ceddec, le mardi 16 août 2005 à 20:29:16 Fil de Discussions
Bonsoir,

déja pour remplacer la virgule par un é utilise plutot strtr() (voir la doc ici : http://www.nexen.net/docs/php/annotee/function.strtr.php?lien=str)

Ensuite, peux tu me dire ce que fais la fonction emplod parceque je ne la connais pas.

Enfin, le script que tu as mis ne mettra pas à jour le fichier puisqu'il n'écrit pas dessus.

Bon courage
Répondre à ceddec

5


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Par toto, le mercredi 17 août 2005 à 09:04:08 Fil de Discussions
salut, merci de ton aide

La fonction implode() est le contraire de la fonction explode(). En fait, la fonction explode() exporte les parties séparées par le sépérateur et de les coller dans un tableau à une dimension et la fonction implode() ne fait que les assembler dans une chaine caractere!
voilà un exemple:
<?
$chaine=" toi rat la, yeu em"; //ma chaine
$extrait= explode(",",$chaine); // si je rencontre une , alors faire
$part1= $extrait[0]; //récuperation de deux parties séparées par la virgule
$part2 =$extrait[1];
$implode=implode("",$extrait); //les rassembler!
print("$implode"); //aller on imprime
?>
le résultat de print() --> toi rat la yeu em ( la virgule disparait!).
Merci encore pour ton aide, je vais consulter le site que tu m'as passé.
Chao!
Répondre à toto

6


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Par ceddec, le mercredi 17 août 2005 à 10:22:29 Fil de Discussions
Merci, c'est bon à savoir. J'ai vu la doc dessus et j'ai trouvé (je pense) une erreur dans le script :
Tu as écris
<?
fichier = "C:\Documents and Settings\Administrateur\Bureau\best.txt" ;
$open=fopen($fichier,"r+") or die ("impossible d'ouvrir le fichier!");
print ("le fichier est ouvert!<br>");
while (!feof($open))
{
$lire_ligne=fgets($open,255);
$extrait=explode(";",$lire_ligne); //chaque fois que l'on
rencontre un ; faire
$nom=$extrait[0]; //récuperer le nom
$prenom=$extrait[1]; //récuperer le prénom
$anal_pre=explode(",",$prenom); //dans le prénom si on
rencontre une" ," alors
$consti=emplode("é",$prenom);

}
fclose($open);
?> 


Ta ligne $consti=emplode("é",$prenom); ne pourra pas marcher éfficacement puisque $prenom est une chaine de caractère. Je pense qu'il faudrait plutôt mettre
$consti=emplode("é",$anal_pre);


Bon courage
Répondre à ceddec

7


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Par toto, le jeudi 18 août 2005 à 10:04:47 Fil de Discussions
Salut, merci de ton aide, j'ai fini le truc.
Mais j'ai une autre question, comment peut-on se placer à la deuxième ligne du fichier?
Merci d'avance et bonne journée à tous!
Répondre à toto

8


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Par ceddec, le jeudi 18 août 2005 à 10:27:03 Fil de Discussions
Bonjour,

Je ne sais pas s'il y a une fonction qui permet de lire ligne par ligne. Par contre comme une ligne se termine par un retour chariot, tu peux faire ca
calculer la position du retour chariot (strpos)
lire ce nombre de caractère (fread(fichier, nombre))
et la tu seras au début de la 2eme ligne

Autre solution : Tu transforme le fichier en un tableau où chaque case correspond à une ligne du fichier et à partir de là, tu peux faire ce que tu veux. (Les explications : http://www.phpindex.com/articles/articles_lire.php3?element=343 )

Bon courage
Répondre à ceddec

9


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Par toto, le jeudi 18 août 2005 à 11:31:58 Fil de Discussions
Je te remercie beaucoup,
en suite, pour lire ligne par ligne j'utilise la méthode suisvante :
<? //Je lit le fichier
$fichier = "chemin"; $open =fopen($fichier,"r+");
while(!feof($open)) {
$lire_ligne = fgets($open,255); // je lis toutes les lignes du fichier !
print("$ligne<br>"); //je l'imprime
}
Voilà ce que j'ai fait pour parcourir le fichier ligne par ligne, je ne sais pas si c'estait ce que tu voulais dire mais au cas où ca peut t'etre util...
Salut !
Répondre à toto

10


  • 1
    Ce message vous semble utile, votez !
  • Ce message ne vous semble pas utile, votez !
  • Signaler ce message aux modérateurs
Par toto, le jeudi 18 août 2005 à 15:58:37 Fil de Discussions 
Salut tout le monde,
j'ai réussi à récupérer le chemin du fichier, et voilà mon script :
Mon formulaire :
<html>
<head></head>
<body>
<form action="action_browse.php" method=post ENCTYPE="multipart/form-data">
<b>Choisissez le fichier</b><br>
<input name="abo" type=file size=60><br>
<input type=submit value="OK">
</form>
</body>
</html>
Mon fichier action_browse.php:
<?
if ($_FILES[abo] !="") {
@copy($_FILES[abo][tmp_name], "c:\uploadfiles".$_FILES[abo][name]) or die("Couldn't copy the file.");
} else {
die(mysql_error());}
print ($_FILES[abo][tmp_name]);
$path = $_FILES[abo][tmp_name];
$open = fopen($path,"r+");
$lire_ligne = fgets($open,255);
print ("$lire_ligne");
print ("<br>Oprération réussie<br>");
print ("ok");

?>
Ca marche très bien, mais ce que je comprends pas c'est qu'il y a toujours la ligne :
Notice: Use of undefined constant tmp_name - assumed 'tmp_name' in "mon chemin" on line 7
qui est afficher, est-ce que c'est une erreur ou juste un avertissement? comment peut-on le résoudre?
Merci d'avance ! chao!
Répondre à toto
Discussions pertinentes trouvées dans le forum
06/12 12h43PHP Recuperer valeur fichier input fileProgrammation02/04 13h447
07/06 23h01récupérer chemin fichier local avec firefoxWebmastering05/01 16h552
29/01 10h51[PHP] Récupérer un fichier protégé par 401Programmation29/01 10h510
16/08 11h54[php] récupérer le chemin du fichierWebmastering18/08 15h5810
31/08 10h46[DOS] Récupérer chemin rép avec 1 fichierWindows31/08 14h304
Plus de discussions sur « php recupere chemin fichier » Discussion en cours Discussion fermée Problème résolu
Répondre
Titre du message :
Votre pseudo:
Votre email :
Message: 
  •  
  •  
Options: Recevoir les réponses par mail.
 

Aide