Php recuperer post input file

Résolu
Bonjour,
j ai dans mon script php un champ input file pour joindre un fichier que je souhaite insérer dans ma base de données

il s'agit de fichier image

<form enctype="multipart/form-data" action="import.php" method="post">
<input type="hidden" name="MAX_FILE_SIZE" value="60000" />
Image : <input name="file_send" type="file" />
<input type="submit" value="Envoyer" />
</form>

1) quel doit être la structure de mon champ upload_image (char , ...) dans ma table
2) comment récupérer le POST "file_send"

je sais que pour un valeur texte c'est du genre if(isset($_POST['nom'])) ... la je ne vois pas

Merci de votre aide
Configuration: Windows Vista
Firefox 3.0.11

16 réponses

  1. Problème résolu !!! et ça venait de mon input le type et le name avait la même valeur "file" j'ai modifié ça et ça fonctionne.

    Merci a tous et en particulier à jambondardennes pour ses efforts
    1. Pour récupérer des fichier uploadés, il faut utiliser $_FILES.

      Petite explication ici:
      http://www.commentcamarche.net/faq/sujet 889 php upload de fichiers
      1. Merci pour la réponse j ai utilisé ce script mais il me bloque au nivau des extensions même les bonnes je ne comprends pas merci

        le message d'erreur :

        Vous devez uploader un fichier de type png, gif, jpg, jpeg, txt ou doc...

        Le script :

        $dossier = 'upload/';
        $fichier = basename($_FILES['file']['name']);
        $taille_maxi = 100000;
        $taille = filesize($_FILES['file']['tmp_name']);
        $extensions = array('.png', '.gif', '.jpg', '.jpeg');
        $extension = strrchr($_FILES['file']['name'], '.');
        //Début des vérifications de sécurité...
        if(!in_array($extension, $extensions)) //Si l'extension n'est pas dans le tableau
        {
        $erreur = 'Vous devez uploader un fichier de type png, gif, jpg, jpeg, txt ou doc...';
        }
        if($taille>$taille_maxi)
        {
        $erreur = 'Le fichier est trop gros...';
        }
        if(!isset($erreur)) //S'il n'y a pas d'erreur, on upload
        {
        //On formate le nom du fichier ici...
        $fichier = strtr($fichier,
        'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ',
        'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy');
        $fichier = preg_replace('/([^.a-z0-9]+)/i', '-', $fichier);
        if(move_uploaded_file($_FILES['file']['tmp_name'], $dossier . $fichier)) //Si la fonction renvoie TRUE, c'est que ça a fonctionné...
        {
        echo 'Upload effectué avec succès !';
        }
        else //Sinon (la fonction renvoie FALSE).
        {
        echo 'Echec de l\'upload !';
        }
        }
        else
        {
        echo $erreur;
        }
        ?>
        1. S'il te bloque c'est à cette ligne surement :
          $extensions = array('.png', '.gif', '.jpg', '.jpeg');
          Vérifies que le fichier en question porte les extensions suivantes : .png, .gif, .jpg ou .jpeg
          Si tu as besoin d'accepter d'autres extensions il te suffit de les rajouter dans la liste :
          $extensions = array('.png', '.gif', '.jpg', '.jpeg', '.nouvelleextension');
          1. Cette partie du code fonctionne très bien. As tu pensé à vérifier la casse de l'extension car si ton fichier s'apelle .JPG ça ne fonctionne pas...
            1. le fichier que j essaye d ajouter est un .jpg j ai esaye avec d'autre extensions autorisés mais pareil...
              1. Enlèves les points dans la ligne des extensions acceptées voir
                1. if(!in_array($extension, $extensions)) //Si l'extension n'est pas dans le tableau

                  Modifies cette ligne et fais :
                  if ($extension==".jpg")
                  1. ça ça marche... c'est ailleurs que se trouve le problème
                2. ah la ca passe j ai un "echec de l'upload" mais plus de probleme d'extension ...
                  1. l'echec de l'upload doit venir du fait que soit tu n'as pas de dossier upload pour qu'il mette le fichier dedans, soit que le dossier upload n'est pas à l'endroit que tu indiques.
                    1. quand je mets un echo devant extension voila le resultat

                      ArrayVous devez uploader un fichier de type png, gif, jpg, jpeg, txt ou doc...

                      merci de votre aide
                      1. Donc le problème vient du tableau vu que tu as array.

                        Au lieu de $extension = strrchr($_FILES['file']['name'], '.');

                        essaies $extension[] = strrchr($_FILES['file']['name'], '.');
                        1. oufffff ! HAHAHA comme quoi je suis pas le seul à devoir farfouiller mes codes ;)