[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