par
Cyrano » 23 août 2005, 10:21
Tu dois écrire $_FILES et non $_files. et dans ton formulaire, dans l'attribut action, il faudrait indiquer echo ou print pour que quelque chose s'affiche dans la valeur de l'attribut...
Et quand ouckileou parle d'indentation, ça veut dire un code qui ressemblerait davantage à ceci, observe l'échelonnement logique:
<?php
// initialisation de la variable du message
$message="";
//traitement du formulaire
//récupérer les informations sur le fichier
if (isset($_POST["ok"]))
{
$informations =$_FILES["fichier"];
//en extraire
// - son nom
$nom=valeur_saisie($informations["name"]);
// - son type Mime
$type_mime =$informations["type"];
// sa taille
$taille=$informations["size"];
// emplacement du fichier temporaire
$fichier_temporaire=$informations["tmp_name"];
// code d'erreur
$code_erreur=$informations["error"];
//contrôles et traitement
switch ($code_erreur)
{
case UPLOAD_ERR_OK :
//fichier bien reçu
//déterminer sa destination finale
$destination="e:/temp/$nom";
//copier le fichier temporaire
if (copy($fichier_temporaire,$destination))
{
//copie OK =>mettre un message de ocnfirmation
$message ="Transfert terminé - fichier=$nom";
$message .="Taille= $taille octets";
$message .= "Type MIME =$type_mime.";
}
else
{
//problème de copie =>mettre un message d'erreur
$message= "problème de copie sur le serveur.";
}
break;
case UPLOAD_ERR_NO_FILE :
//pas de fichier saisi
$message = "pas de fichier saisi";
break;
case UPLOAD_ERR_INI_SIZE :
//taille fichier > upload_max_filesize
$message="Fichier '$nom' non transféré";
$message .= "(taille > MAX_FILE_SIZE).";
break;
case UPLOAD_ERR_PARTIAL :
//fichier partiellement transféré
$message = "Fichier '$nom' non transféré";
$message .= " (problème lors du transfert).";
case 5 :
//fichier partiellement transféré
$message ="Fichier '$nom' non transféré";
$message .= "(non trouvé).";
break;
default :
//erreur non prévue !
$message = "fichier non transféré";
$message .= "(erreur inconnue : $code_erreur).";
}
}
?>
<html>
<head>
<title>saisie</title>
</head>
<body>
<form action="<?php echo($_SERVER['PHP_SELF']); ?>" method="post" enctype="multipart/form-data">
<input type="hidden" name="MAX_FILE_SIZE" value="10240">
fichier: <input type="file" name="fichier"><br>
<input type="submit" name="ok" value="ok">
</form>
</body>
</html>
Ce que je ne comprends pas, c'Est pourquoi tu initialises une variable $information au lieu d'utiliser directement $_FILES ...

Tu dois écrire $_FILES et non $_files. et dans ton formulaire, dans l'attribut action, il faudrait indiquer echo ou print pour que quelque chose s'affiche dans la valeur de l'attribut...
Et quand ouckileou parle d'indentation, ça veut dire un code qui ressemblerait davantage à ceci, observe l'échelonnement logique:
[php]<?php
// initialisation de la variable du message
$message="";
//traitement du formulaire
//récupérer les informations sur le fichier
if (isset($_POST["ok"]))
{
$informations =$_FILES["fichier"];
//en extraire
// - son nom
$nom=valeur_saisie($informations["name"]);
// - son type Mime
$type_mime =$informations["type"];
// sa taille
$taille=$informations["size"];
// emplacement du fichier temporaire
$fichier_temporaire=$informations["tmp_name"];
// code d'erreur
$code_erreur=$informations["error"];
//contrôles et traitement
switch ($code_erreur)
{
case UPLOAD_ERR_OK :
//fichier bien reçu
//déterminer sa destination finale
$destination="e:/temp/$nom";
//copier le fichier temporaire
if (copy($fichier_temporaire,$destination))
{
//copie OK =>mettre un message de ocnfirmation
$message ="Transfert terminé - fichier=$nom";
$message .="Taille= $taille octets";
$message .= "Type MIME =$type_mime.";
}
else
{
//problème de copie =>mettre un message d'erreur
$message= "problème de copie sur le serveur.";
}
break;
case UPLOAD_ERR_NO_FILE :
//pas de fichier saisi
$message = "pas de fichier saisi";
break;
case UPLOAD_ERR_INI_SIZE :
//taille fichier > upload_max_filesize
$message="Fichier '$nom' non transféré";
$message .= "(taille > MAX_FILE_SIZE).";
break;
case UPLOAD_ERR_PARTIAL :
//fichier partiellement transféré
$message = "Fichier '$nom' non transféré";
$message .= " (problème lors du transfert).";
case 5 :
//fichier partiellement transféré
$message ="Fichier '$nom' non transféré";
$message .= "(non trouvé).";
break;
default :
//erreur non prévue !
$message = "fichier non transféré";
$message .= "(erreur inconnue : $code_erreur).";
}
}
?>
<html>
<head>
<title>saisie</title>
</head>
<body>
<form action="<?php echo($_SERVER['PHP_SELF']); ?>" method="post" enctype="multipart/form-data">
<input type="hidden" name="MAX_FILE_SIZE" value="10240">
fichier: <input type="file" name="fichier"><br>
<input type="submit" name="ok" value="ok">
</form>
</body>
</html>[/php]
Ce que je ne comprends pas, c'Est pourquoi tu initialises une variable $information au lieu d'utiliser directement $_FILES ... :-k