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 20/03/2007, 13h07   #1
Invité régulier
 
Inscription : juillet 2006
Messages : 21
Détails du profil
Informations forums :
Inscription : juillet 2006
Messages : 21
Points : 8
Points : 8
Par défaut [Upload] Problème avec l'upload : Pas de fichier tmp !

Bonjour,
voici min problème.
J'ai un formulaire avec un imput file.
j'ai le traitement php pour traiter le fichier

Lorsque je l'execute : pas d'erreur sauf que je ne peux pas copier le tmp dans un autre dossier car de dossier temporaire pour l'upload est vide alors que le code error est à 0 (donc pas de problème !)

voici le code :
1) formulaire
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
 
<?php /* Date de création: 08/03/2007 */ ?>
<html>
<body>
<?php	 
/* bouton parcourir  avec un premier test sur la taille en octets (ici 2Mo : 2097152 octets)*/	 
echo '<form method="post" action="reception.php" enctype="multipart/form-data">';
echo '<input type="hidden" name="MAX_FILE_SIZE" value="1847300 " />'; 
echo '<label for="lefichier">Choix du fichier à transférer (Tous formats | max. 2Mo):</label><br><br>';
echo '<input size="80" type="file" name="lefichier"  id="lefichier"/><br><br>'; 
echo '<input type="submit" name="submit" value="Envoyer" />';
echo '</form>';	 
?>
</body>	
 </html>
2) Php
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
 
<?php /* Date de création: 12/03/2007 */ ?>
<html>
<body>
<?php	 
/* ATTENTION : Mettre les extentions en MAJ */
$extensions_interdites = array( 'EXE' , 'PHP' , 'DLL' , 'BAT', 'CMD', 'VBS' , 'WHS' );
 
if ($_FILES['lefichier']['error'] > 0){  
	$erreur = "Erreur lors du tranfsert"; 
	echo $erreur .'<br>';
	echo 'Code erreur : '.$_FILES['lefichier']['error'].' => ';  
	/* Gestion des codes erreurs */	
	switch ($_FILES['lefichier']['error']) { 
		case "1" : 
			echo ' Le fichier téléchargé excède la taille maximum configurée sur le serveur<br>';
			break;
  		case "2" : 
			echo ' Le fichier téléchargé excède la taille spécifiée dans le formulaire<br>';
			break;
    	 case "3" : 
			echo ' Le fichier n\'a été que partiellement téléchargé<br>';
			break; 
		case "4" : 
			echo ' Aucun fichier n\'a été téléchargé<br>';
			break;	
		case "6" : 
			echo ' Un dossier temporaire est manquant sur le serveur !<br>';
			break;	
		case "7" : 
			echo ' Echec de l\'écriture du fichier sur le serveur !<br>';
			break;	
		default:
     		echo ' Erreur inconnu !<br>';
		}
	}
else { 	   
echo '<PRE>';	  
print_r($_POST)	 ;
print_r($_FILES)	 ;
echo '</PRE>';
	 echo 'Transfert du fichier '.$_FILES['lefichier']['name'].' en cours... <br>';
	 echo 'Taille du fichier : '.$_FILES['lefichier']['size'].' octets <br>';	
	 /* Test sur la taille réelle reçue*/
	 if ($_FILES['lefichier']['size'] > $_POST['MAX_FILE_SIZE'] ){  
	 	echo 'Le fichier est trop gros : Transfert annulé ! '; 
	    } 
	 else {	
	 		 /* Test sur le type de fichier reçu : pas de fichier php ni exe et autre scripts . Basé sur l'extension*/ 
			$extension_dufichier = substr(strrchr($_FILES['lefichier']['name'], '.')  ,1);
			echo 'Type du fichier : '.$extension_dufichier .'<br>';
			if ( in_array(strtoupper($extension_dufichier),$extensions_interdites) ){	
			 	 echo '<br>Type de fichier interdit : Transfert annulé !';
				}
			else { 
					/* Ecriture du fichier temporaire dans un dossier prévu pour cela */
					$cible = microtime();
					$cible = "/lesloads/".str_replace(' ','',$cible).$_FILES['lefichier']['name']; 
					$resultat = move_uploaded_file($_FILES['lefichier']['tmp_name'],$cible);
					if ($resultat) {
						echo "Transfert réussi";	
						}  
					else {	 
						echo "Le transfert vers le serveur a echoué ! <br>";	
						echo  $_FILES['lefichier']['tmp_name'] ;
						}	
				 }
	 	  }
	} 
 
?>
</body>
</html>
3) résultat
Array
(
[MAX_FILE_SIZE] => 1847300
[submit] => Envoyer
)
Array
(
[lefichier] => Array
(
[name] => test.txt
[type] => application/x-javascript
[tmp_name] => C:\Apache\Apache2\htdocs\upload\php7.tmp
[error] => 0
[size] => 60340
)

)

Transfert du fichier test.txt en cours...
Taille du fichier : 60340 octets
Type du fichier : js
Le transfert vers le serveur a echoué !
C:\Apache\Apache2\htdocs\upload\php7.tmp
commedab est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/03/2007, 13h10   #2
Rédacteur
 
Avatar de Yogui
 
Homme Guillaume Rossolini
Directeur technique
Inscription : février 2004
Messages : 13 720
Détails du profil
Informations personnelles :
Nom : Homme Guillaume Rossolini
Localisation : France

Informations professionnelles :
Activité : Directeur technique

Informations forums :
Inscription : février 2004
Messages : 13 720
Points : 17 355
Points : 17 355
Salut

Le dossier "/lesloads" n'existe pas dans un système de fichiers Windows
__________________
Mes articles - Zend Certified Engineer (PHP + Zend Framework)
Ressources PHP - Ressources Zend Framework
Yogui est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/03/2007, 13h28   #3
Invité régulier
 
Inscription : juillet 2006
Messages : 21
Détails du profil
Informations forums :
Inscription : juillet 2006
Messages : 21
Points : 8
Points : 8
Par défaut Bravo

Merci,
Qu'elle rapidité

J'ai remplacer pour un test :

$cible = "/lesloads/".str_replace(' ','',$cible).$_FILES['lefichier']['name'];

Par :

$cible = "c:\\lesloads\\".str_replace(' ','',$cible).$_FILES['lefichier']['name'];

J'ai bien créer ce dossier

ET.... Nickel
Je suis vraiment un peu trop bête... Mais je débute en php alors je me trouve une bonne excuse qui n'as rien à voir avec le php lui même (c'est du système)

Ps : cela marche mais je n'ai rien dans le tmp : il le supprme aussitot ?

Merci encore
commedab est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/03/2007, 13h32   #4
Rédacteur
 
Avatar de Yogui
 
Homme Guillaume Rossolini
Directeur technique
Inscription : février 2004
Messages : 13 720
Détails du profil
Informations personnelles :
Nom : Homme Guillaume Rossolini
Localisation : France

Informations professionnelles :
Activité : Directeur technique

Informations forums :
Inscription : février 2004
Messages : 13 720
Points : 17 355
Points : 17 355
move_uploaded_files
__________________
Mes articles - Zend Certified Engineer (PHP + Zend Framework)
Ressources PHP - Ressources Zend Framework
Yogui est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/03/2007, 13h38   #5
Invité régulier
 
Inscription : juillet 2006
Messages : 21
Détails du profil
Informations forums :
Inscription : juillet 2006
Messages : 21
Points : 8
Points : 8
Par défaut merci

Merci... vraiment trop bête aujourd'hui
commedab 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 05h08.


 
 
 
 
Partenaires

Hébergement Web