Page 1 sur 1
UPLOAD
Posté : 22 août 2005, 14:16
par m8sql
Salut à tous les phpatators!
C'est avec joie que je vous retrouve sur phpfrance ;=)
qq'un pourrait me donner un script pour faire un upload de fichier , svp , merci ! (cours aussi si vous avez...merci

)
P'tit coucou à Cyrano au passage

Posté : 22 août 2005, 14:19
par mere-teresa
Posté : 22 août 2005, 14:25
par m8sql
C'est écrit ceci dans ton exemple , à quoi ça correspond ?
Il faut également spécifier la valeur multipart/form-data dans le type d'encodage des données du formulaire (enctype).
il le me met ou le fichier en fait ?

$dest_dossier = '/photos';
je le retrouve dans le c:\ ?
Posté : 22 août 2005, 14:34
par ouckileou
C'est écrit ceci dans ton exemple , à quoi ça correspond ?
Il faut également spécifier la valeur multipart/form-data dans le type d'encodage des données du formulaire (enctype).
ça veut dire ça :
#
<form method="POST" action="notre_script.php" enctype="multipart/form-data">

Posté : 22 août 2005, 14:40
par m8sql
oui d'accord, mais ca sert à quoi en fait denotifier cela ?
Etje l'ulpoad ou le fichier en fait ?
merci
Posté : 22 août 2005, 14:46
par ouckileou
ça sert à préciser que tu envoies un fichier avec ton formulaire justement
et le fichier est uploadé dans le répertoire temporaire du serveur, tu le récupères ensuite où tu veux avec la fonction : move_uploaded_file()
Posté : 22 août 2005, 14:59
par m8sql
OK thx pour ces précisions.
@++++
Posté : 23 août 2005, 09:57
par m8sql
voilà j'ai trouvé un autre script que j'ai modifié quelque peu ,mais je ne ocmprends pas pourquoi ça ne marche pas.
<?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 $_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>
Il ne se passe rien.
Posté : 23 août 2005, 10:00
par ouckileou
erreur ou simplement pas de fichier à l'arrivée ?
tu n'indentes jamais ton code ?
Posté : 23 août 2005, 10:11
par m8sql
<?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 $_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>
quand je valide sur ok le traitement ne fonctionne pas...
Posté : 23 août 2005, 10:17
par ouckileou
Voici du code indenté que je trouve bien plus clair
<?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).";
// <------------------------------------------------------ manque un break ici
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).";
}
}
?>
Tu offres la possibilité de stocker tout un tas de messages d'erreur, mais tu ne les affiche pas. Ca aiderait pourtant non ?

Posté : 23 août 2005, 10:21
par Cyrano
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 ...

Posté : 24 août 2005, 11:57
par m8sql
ok cyrano, merci.
Moi ce que je ne comprends pas dans ce script :
la ligne 3 :
$message="";
la ligne 11 :
$nom=valeur_saisie($informations["name"]);
ligne qui m'affiche une erreur comme function undefined
et comme disait ouckileou , est ce les $messages s'affichent dans le switch vu qu'il y a pas d'echo ?
Posté : 24 août 2005, 12:06
par ouckileou
c'est quoi la fonction valeur_saisie() ? tu l'as définie dans ton script ?
et non, si il n'y a pas d'echo ou de print les messages ne s'afficheront pas tout seul
