Version complète: sur le forum Webmaster Hub : Créer un formulaire pour upload de fichiers
Webmaster Hub > Création et exploitation de Sites Internet > Les langages du Net > PHP
LiL'SkiSo
Bonjour,

Je désirerais créer un formulaire avec un champ de type "file" pour uploader un fichier sur le serveur.

Mais je ne m'en sort pas trop, j'ai trouvé quelques tutos sur le net, et je suis les instructions mais ça ne fonctionne pas unsure.gif ...

En plus, quand je vais dans phpinfo, je vois que mon "upload_tmp_dir" est en "no value" (je suis hébergé chez Free).

J'aurais donc besoin d'assistance pour le faire pas à pas svp, si c'est possible...

Je suis assez débutant en php, j'ai fait quelques trucs avec du mysql, et là j'ai besoin de quelque chose qui requiert beaucoup plus de connaissances...

Merci rolleyes.gif !
xou
Et en regardant dans le manuel au lieu de tutos ?

http://fr3.php.net/manual/fr/features.file-upload.php
NorSeb
Bonjour,

Il ne faut pas oublier de mettre
HTML
enctype="multipart/form-data"
dans la balise FORM.

D'autre part, fais attention à la taille du fichier. Il y a souvent des limites. Dans un premier temps, je te conseille d'essayer avec un petit fichier.

Coté serveur, il y a peut-être des restrictions... mais c'est plutôt à Dan de t'orienter wink.gif
Dan
La limitation par défaut est de 2MB... mais je ne sais pas pour Free qui a tendance à "durcir les règles".

Sinon, une fois qu'un fichier a été transmis, il faut utiliser move_uploaded_file() pour le sortir du répertoire temporaire dans lequel il est placé par défaut.

Voir la page du manuel de php concernant la gestion des chargements de fichiers : http://www.manuelphp.com/php/features.file...post-method.php
al nassara
Je confirme, FREE c'est 2Mo maximum..et pas moyen de le changer IMSTP5.gif
(pas trouvé en tout cas..)
LiL'SkiSo
Salut, merci à tous pour vos infos, par contre je voudrais insérer le champ "file" dans un formulaire qui contient déjà quelques champs, et dont il n'y a pas en "enctype". Sa marche si je le rajoute à coté de "Action" ?
adn
Oui tout à fait smile.gif
LiL'SkiSo
Salut à tous,

J'ai créer ce formulaire depuis quelques jours en cherchant sur plusieurs sites.

Je l'ai fini mais il m'indique une erreur d'extension, voici mon code :

CODE
<?

if( isset($_POST['upload']) ) // si formulaire soumis
{
   $content_dir = '/var/www/free.fr/9/9/va.skyjet/skyhtmltest/'; // dossier où sera déplacé le fichier

   $tmp_file = $_FILES['fichier']['tmp_name'];

   if( !is_uploaded_file($tmp_file) )
   {
       exit("Le fichier est introuvable");
   }

   // on vérifie maintenant l'extension
   $type_file = $_FILES['fichier']['type'];

   if( !strstr($type_file, 'flt') && !strstr($type_file, 'FLT') )
   {
       exit("Le fichier n'est pas le bon, son extension doit être .flt !");
   }

   // on copie le fichier dans le dossier de destination
   $name_file = $_FILES['fichier']['name'];

   if( !move_uploaded_file($tmp_file, $content_dir . $name_file) )
   {
       exit("Impossible de copier le fichier dans $content_dir");
   }

   echo "Le fichier a bien été uploadé";
}

?>


Je suis sur de vouloir uploader un fichier d'extension "flt", et il m'envoi le message d'erreur quand même !

Quelqu'un pourrait m'aider SVP ??

Merci !
NorSeb
Bonjour,

Ajoute un

CODE
echo $_FILES['fichier']['type'];


Tu verras bien ce qu'il en est...
LiL'SkiSo
Ca m'affiche : application/octet-stream

C'est quoi :| ?
NorSeb
C'est le type de fichier smile.gif En aucun cas l'extension.

Pour vérifier que le nom du fichier comporte l'extension que tu veux tu peux faire :
CODE
if (eregi(".flt", $FILES['fichier']['name'])) {
LiL'SkiSo
D'accord, merci ça fonctionne !

Au fait, j'aurais aussi voulu que le nom porte celui d'une variable $file avec une extension .flt,

Comment faire ??

Merci wink.gif !
LiL'SkiSo
Ou plutôt de vérifier que le nom du fichier est bien le même que celui du $file ?
NorSeb
Il suffit de faire une comparaison non ?

CODE
if ($_FILES['fichier']['name'] == $file)
LiL'SkiSo
Oui en fait c'est bon, il fallait juste rajouter le

if ($_FILES['fichier']['name'] == "$file.FLT")

Et ça marche wink.gif !
Ceci est une version "bas débit" de notre forum. Pour voir la version complète avec plus d'information, la mise en page et les images, veuillez cliquer ici.