Précédent   Forum des professionnels en informatique > PHP > Langage > Fichiers
Fichiers Forum d'entraide sur les fichiers avec PHP. Avant de poster -> FAQ fichiers et Sources fichiers
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 25/08/2011, 08h50   #1
Candidat au titre de Membre du Club
 
Inscription : mars 2007
Messages : 52
Détails du profil
Informations forums :
Inscription : mars 2007
Messages : 52
Points : 11
Points : 11
Par défaut Fonction transfert fichiers -> résultat incohérent

Bonjour à tous,

Pourriez-vous me dire ce qui ne va pas dans ma fonction transferer_fichier() qui teste la présence d'un fichier de même nom sur le serveur puis uploade le fichier si tout va bien :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
 
function transferer_fichier($NomTemp,$NomReel,$RepDestination)
{
	$nom_fichier = traite_nom_fichier($NomReel); //enlève les caractères non autorisés + fixe le nom de fichier à 30 caractères maxi
 
	if (file_exists($RepDestination.$nom_fichier)) {
		//nom existe déjà
		$nom_fichier = 0;
	}
	else {
		if (move_uploaded_file($NomTemp, $RepDestination.$nom_fichier)) {
			//OK
			$nom_fichier = $nom_fichier;
		}
		else {
			//erreur transfert
			$nom_fichier = 1;
		}
	}
 
	return $nom_fichier;
}
Après, dans ma page php, je gère le résultat de la fonction avec un code de ce genre :

Code :
1
2
3
4
5
 
$transfert = transferer_fichier($NomTemp,$NomReel,$RepDestination);
if ($transfert == 0) {echo 'Un fichier de même nom existe déjà sur le serveur';}
else if ($transfert == 1) {echo 'Erreur de transfert';}
else {echo 'Transfert réussi !';}
Résultat : j'ai systématiquement le code erreur $transfert = 0 (nom de fichier déjà présent sur le serveur), alors que :
- il n'existe absolument pas de fichier de même nom sur le serveur
- l'upload se fait quand même avec succès

Je ne comprend pas comment il peut me renvoyer $transfert = 0 alors que l'upload a réussi et que $transfert devrait être égal à $nom_fichier.

Merci d'avance pour votre aide @+
Marmotton76 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/08/2011, 11h27   #2
Candidat au titre de Membre du Club
 
Inscription : mars 2007
Messages : 52
Détails du profil
Informations forums :
Inscription : mars 2007
Messages : 52
Points : 11
Points : 11
Bon ça y est j'ai trouvé, pour ceux qui auraient eu le même genre de pb :

Y'avait 2 erreurs :
1) Dans ma fonction, je dois renvoyer le même type de valeur pour le résultat, et non pas une fois un entier, une fois une chaîne de texte.
Donc en remplaçant la valeur 1 par la chaine "erreur", et la valeur 0 par la chaîne "doublon", ça fonctionne...
2) Je devais ajouter un autre paramètre à ma fonction : $chemin_relatif. Car j'avais seulement un chemin absolu pour les besoins de l'upload, et le file_exists(), lui, nécessiterait un chemin relatif...

C'était tout bête !
@+
Marmotton76 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 08h33.


 
 
 
 
Partenaires

Hébergement Web