Problème script.php

Fermé
Neo3352 Messages postés 5 Date d'inscription jeudi 9 septembre 2004 Statut Membre Dernière intervention 14 mars 2007 - 13 mars 2007 à 11:58
Neo3352 Messages postés 5 Date d'inscription jeudi 9 septembre 2004 Statut Membre Dernière intervention 14 mars 2007 - 14 mars 2007 à 20:55
Bonjour à tous!
Je suis novice en création de sites web et plus particulièrement en php mais je voulais mettre sur mon site un script d'upload ou les gens pourraient upper un petit fichier (.doc)
j'ai donc trouvé ceci sur le web:
1°)Le formulaire d'envoi au format html qui appelle le script php:

<html>
<body>
<form enctype="multipart/form-data" action="fileupload.php" method="post">
<input type="hidden" name="MAX_FILE_SIZE" value="100000" />
Transfère le fichier <input type="file" name="monfichier" />
<input type="submit" />
</form>
</body>
</html>


2°) le script php:

<html>
<body>
<?php
$repertoireDestination = "docs/";
$nomDestination = $_FILES["monfichier"]["name"];

// Pour raison de sécurité nous ajouterons aux fichiers
// portant une extension .php .php3, l'extension .txt
if (eregi(".php", $nomDestination)) {
$nomDestination .= ".txt";
}

if (is_uploaded_file($_FILES["monfichier"]["tmp_name"])) {
if (rename($_FILES["monfichier"]["tmp_name"],
$repertoireDestination.$nomDestination)) {
echo "Le fichier temporaire ".$_FILES["monfichier"]["tmp_name"].
" a été déplacé vers ".$repertoireDestination.$nomDestination;
} else {
echo "Le déplacement du fichier temporaire a échoué".
" vérifiez l'existence du répertoire ".$repertoireDestination;
}
} else {
echo "Le fichier n'a pas été uploadé (trop gros ?)";
}
?>
</body>
</html>

3°)MON PROBLEME:
à chaque fois ke j'essaie d'upper un fichier sur le site, j'ai l'erreur suivante:
"Le déplacement du fichier temporaire a échoué"." Vérifiez l'existence du répertoire docs/ "
alors que le répertoire est bien présent et au même niveau que le script php. J'ai aussi essayer de modifier docs/ en ./docs/ mais rien n'y fait. En ce qui concerne les attributs du répertoire docs, j'ai mis chmod777 dc normalement çà doit aller.
Enfin,je suis chez Lycos(hébergement gratuit 50mo ki gère le php)
MERCI BCP POUR VOTRE PRECIEUSE AIDE,
David.

7 réponses

Reivax962 Messages postés 3672 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 11 février 2021 1 011
13 mars 2007 à 12:22
Petit test : demande lui de créer ce répertoire.
Comme ça, tu verras où celui-ci a été créé, et ainsi tu pourras corriger son chemin en conséquence...
0
bbar Messages postés 436 Date d'inscription mercredi 27 septembre 2006 Statut Membre Dernière intervention 31 octobre 2008 140
13 mars 2007 à 12:32
salut, pour la référence de ton répertoire essaye de mettre le chemin absolu : "www.blablabla/.../docs/" plutot que docs/ tout court
0
Neo3352 Messages postés 5 Date d'inscription jeudi 9 septembre 2004 Statut Membre Dernière intervention 14 mars 2007
13 mars 2007 à 14:41
Merci bcp pour vos réponses mais çà ne marche tjrs pas.
1°) j'ai tjrs la même erreur en remplacant docs/ par http://..../...../
2°)j'ai essayer de créer un dossier avec :
<?php
$mypath="/documents/";
mkdir($mypath,0777,TRUE);
?>
mais il ne se passe rien,il n'est pas créé.

Une autre idée?
0
Neo3352 Messages postés 5 Date d'inscription jeudi 9 septembre 2004 Statut Membre Dernière intervention 14 mars 2007
13 mars 2007 à 17:15
PROBLEME RESOLU!!!!!

en fait c'était le script php qui ne convenait pas à lycos, en fouillant sur le web j'en ai trouvé un qui marchait avec lycos,le voici:
# <?
# // Taille max des fichiers (octets)
# $MFS=5000;
# // Répertoire de stockage
# $rep="/";
#
# if($userfile_size>0) {
# $savefile= $rep.$userfile_name;
#
# if (move_uploaded_file($userfile, $savefile)) { ?>
# <b>Votre fichier a bien été enregistré !</b>
# <BR>Nom : <? echo($userfile_name); ?>
# <BR>Taille : <? echo($userfile_size); ?> octets
# <BR>Type : <? echo($userfile_type);
# } else { ?>
# <b>Erreur d'enregistrement !</b>
# <? }
#
# } elseif($userfile) { ?>
# <b>Trop gros fichier !</b>
# <i>( <? echo $MFS;?> octets max.)</i>
# <? } ?>


Il me reste encore un problème( dsl!), en fait si la personne upload un fichier identique au niveau du nom à un qui se trouve déjà sur le serveur( disons test.doc),celui-ci est remplacé. J'aimerais bien que ce ne soit pas le cas,cad que le fichier soit renommé.
C'est possible çà?
Merci bcp pour votre aide!
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Neo3352 Messages postés 5 Date d'inscription jeudi 9 septembre 2004 Statut Membre Dernière intervention 14 mars 2007
13 mars 2007 à 20:44
En fait en fouillant de nouveau je viens de trouver qu'il fallait utiliser la fonction date("YmdHis_" ) pour renommer le fichier sur le site mais ou l'inclure dans mon script php? Et comment écrire? J'ai essayé plusieures possibilités mais çà ne marche pas.
Un grand merci pour votre aide!
0
bbar Messages postés 436 Date d'inscription mercredi 27 septembre 2006 Statut Membre Dernière intervention 31 octobre 2008 140
14 mars 2007 à 09:55
salut. Voilà ton script avec quelques modifications commentées. Je te précise que chez moi, ça marche.

 <? 
 //print_r($_FILES);
 $userfile_name=$_FILES['monfichier']['name'];
 $userfile_size=$_FILES['monfichier']['size'];
 $userfile_type=$_FILES['monfichier']['type'];
 $userfile_tmp_name=$_FILES['monfichier']['tmp_name'];
 
 // Taille max des fichiers (octets) 
 $MFS=5000; 
 // Répertoire de stockage 
 $rep="/"; 
 
 if(($userfile_size>0)||($userfile_size<$MFS)) { 

 
  /*je pense que c'est là qu'il faut que tu testes la présence du fichier*/
  //si on a déjà un fichier portant le nom $userfile_name dans le répertoire $rep
  if (file_exists($rep.$userfile_name)){
   // on sépare le fichier dans un tableau avec le nom d'un côté et l'extension de l'autre
   $fichier=explode('.',$userfile_name);
   // on récupère la date au format année/mois/jour/heure/minute/seconde
   $date=date("_YmdHis" );
   //on concatène : nomdufichier_date.ext
   $userfile_name = $fichier[0].$date.".".$fichier[1];}
  
   //on rajoute le chemin du répertoire d'upload
   $savefile= $rep.$userfile_name;

 // le premier argument de "move_uploaded_file" est le nom temporaire du fichier
 if (move_uploaded_file($userfile_tmp_name, $savefile)) { ?> 
 <b>Votre fichier a bien été enregistré !</b> 
 <BR>Nom : <? echo($userfile_name); ?> 
 <BR>Taille : <? echo($userfile_size); ?> octets 
 <BR>Type : <? echo($userfile_type); 
 } else { ?> 
 <b>Erreur d'enregistrement !</b> 
 <? } 
 
 } elseif($userfile_size>$MFS) { ?> 
 <b>Trop gros fichier !</b> 
 <i>( <? echo $MFS;?> octets max.)</i> 
 <? } ?>
0
Neo3352 Messages postés 5 Date d'inscription jeudi 9 septembre 2004 Statut Membre Dernière intervention 14 mars 2007
14 mars 2007 à 20:55
Merci beaucoup pour ton aide bbar! Ca marche! En fait il ne marchait pas chez moi mais je l'ai un peu modifié ( pas beaucoup c'est toi qui a tout fait)
Pour ceux que ca intéresse donc,voilà le script de bbar pour lycos:

<?
// Taille max des fichiers (octets)
$MFS=5000;
// Répertoire de stockage
$rep="/";

if(($userfile_size>0)||($userfile_size<$MFS)) {


/*je pense que c'est là qu'il faut que tu testes la présence du fichier*/
//si on a déjà un fichier portant le nom $userfile_name dans le répertoire $rep
if (file_exists($rep.$userfile_name)){
// on sépare le fichier dans un tableau avec le nom d'un côté et l'extension de l'autre
$fichier=explode('.',$userfile_name);
// on récupère la date au format année/mois/jour/heure/minute/seconde
$date=date("_YmdHis" );
//on concatène : nomdufichier_date.ext
$userfile_name = $fichier[0].$date.".".$fichier[1];}

//on rajoute le chemin du répertoire d'upload
$savefile= $rep.$userfile_name;

// le premier argument de "move_uploaded_file" est le nom temporaire du fichier
if (move_uploaded_file($userfile, $savefile)) { ?>
<b>Votre fichier a bien été enregistré ! Merci beaucoup et au revoir!</b>
<BR>Nom : <? echo($userfile_name); ?>
<BR>Taille : <? echo($userfile_size); ?> octets
<BR>Type : <? echo($userfile_type);
} else { ?>
<b>Erreur d'enregistrement !</b>
<? }

} elseif($userfile_size>$MFS) { ?>
<b>Trop gros fichier !</b>
<i>( <? echo $MFS;?> octets max.)</i>
<? } ?>

Encore merci!
David.
0