Flux rss
Collection CommentCaMarche.net

[PHP] Upload de fichiers

Publié par Jeff, dernière mise à jour le vendredi 29 août 2008 à 21:35:53 par DJ Fire-Black
Le langage PHP permet de gérer des fichiers envoyés (uploadés) grâce à un formulaire HTML.



Formulaire d'envoi de fichiers


La première chose à faire consiste à créer un formulaire HTML permettant à l'utilisateur d'ouvrir une boîte de dialogue permettant de choisir le fichier à envoyer :

<FORM method="POST" action="[votre fichier PHP pour l'upload.php]" ENCTYPE="multipart/form-data">
          <INPUT type=hidden name=MAX_FILE_SIZE  VALUE=2048>
          <INPUT type=file name="nom_du_fichier">
          <INPUT type=submit value="Envoyer">
</FORM>

Il est impératif de ne pas oublier l'attribut ENCTYPE="multipart/form-data" ! Le cas échéant, le formulaire n'aurait aucun effet.

Par ailleurs le champ MAX_FILE_SIZE est une indication de la taille maximum du fichier à uploader pour le navigateur, mais celà n'est pas suffisant pour s'assurer que les fichiers uploadés ne dépasseront pas une certaine taille dans la mesure où tous les navigateurs ne prennent pas systématiquement en compte cette valeur. La valeur de la taille maximale du fichier uplodé est ajustable "en dûr" dans le fichier de configuration php.ini.

Configuration de PHP pour permettre l'upload


Le fichier de configuration php.ini contient des directives permettant d'autoriser ou non l'envoi de fichiers via un formulaire ainsi que de le paramétrer :

file_uploads= On/Off permet d'autoriser ou non l'envoi de fichiers.
upload_tmp_dir = répertoire permet de définir le répertoire temporaire permettant d'accueillir le fichier uploadé.
upload_max_filesize = 2M permet de définir la taille maximale autorisée pour le fichier. Si cette limite est dépassée, le serveur enverra un code d'erreur.
post_max_size indique la taille maximale des données envoyées par un formulaire. Cette directive prime sur upload_max_filesize, il faut donc s'assurer d'avoir post_max_size supérieure à upload_max_filesize

Si vous n'avez pas accès à la configuration (cas d'un site hébergé sur le serveur du fournisseur d'accès ou dans le cas d'un hébergement mutualisé), vous pouvez vérifier la configuration grâce à la fonction phpinfo() :

<?
  phpinfo();
?>

Récupération du fichier avec PHP


Le fichier, ainsi que les informations le concernant, sont accessibles via la variable superglobale $_FILES[].
Pour afficher son contenu, vous pouvez utiliser le script suivant :

<pre><?  print_r($_FILES); ?></pre>

La sortie de ce code sera de la forme suivante :

Array
(
    [nom_du_fichier] => Array
        (
            [name] => MaBelleImage.jpg
            [type] => image/jpg
            [tmp_name] => chemin_complet_du_fichier_uploadé
            [error] => 0
            [size] => 1000
        )

) 

Dans le cas ci-dessus il s'agit d'une image JPEG pesant 1 Mo.


Les champs $_FILES[name], $_FILES[type], $_FILES|error], $_FILES[size] permettent d'effectuer des tests sur le type de fichier, sa taille, son nom et vérifier s'il y a eu des erreurs.

Ainsi, vous pouvez traiter les erreurs de la manière suivante :

<?      
if ($_FILES['nom_du_fichier']['error']) {
          switch ($_FILES['nom_du_fichier']['error']){
                   case 1: // UPLOAD_ERR_INI_SIZE
                   echo"Le fichier dépasse la limite autorisée par le serveur (fichier php.ini) !";
                   break;
                   case 2: // UPLOAD_ERR_FORM_SIZE
                   echo "Le fichier dépasse la limite autorisée dans le formulaire HTML !");
                   break;
                   case 3: // UPLOAD_ERR_PARTIAL
                   echo "L'envoi du fichier a été interrompu pendant le transfert !";
                   break;
                   case 4: // UPLOAD_ERR_NO_FILE
                   echo "Le fichier que vous avez envoyé a une taille nulle !");
                   break;
          }
}
else {
 // $_FILES['nom_du_fichier']['error'] vaut 0 soit UPLOAD_ERR_OK
 // ce qui signifie qu'il n'y a eu aucune erreur
}
?>




Grâce à la fonction move_uploaded_files() il est possible de transférer l'image du répertoire temporaire vers un répertoire de destination :
<?

if ((isset($_FILES['nom_du_fichier']['fichier'])&&($_FILES['nom_du_fichier']['error'] == UPLOAD_ERR_OK)) {
$chemin_destination = '/var/www/fichiers/';
move_uploaded_file($_FILES['nom_du_fichier']['tmp_name'], $chemin_destination.$_FILES['nom_du_fichier']['name']);
}
?> 

Résultats pour Upload de fichiers

Aide upload de fichier PHP (Résolu) Bonjour tout le monde!! Voila je cherche à faire un upload de fichier par php, j'ai regardé sur internet, piqué des bout de codes à droite, à gauche et j'arrive à ça: [quote] www.commentcamarche.net/forum/affich-6630503-aide-upload-de-fichier-php
PHP Upload fichiers (Résolu) Bonjour, et merci de l'attention que vous porterez à mon message. C'est apprécié. J'ai un certain problème en PHP, dans l'élaboration d'un intranet. Il me faut uploader un fichier dans un répertoire précis. Pour ce faire, il... www.commentcamarche.net/forum/affich-5619458-php-upload-fichiers
PHP UPLOAD FICHIERS 1&& (Résolu) Bonjour, Je travaille sur un formulaire php pour uploader un fichier image sur un serveur. Mon hébergeur est 1&1. Le code de traitement du formulaire est le suivant : ************************************************************************... www.commentcamarche.net/forum/affich-5686121-php-upload-fichiers-1

Résultats pour Upload de fichiers

[Webmaster] Faire facilement un espace d'uploadPourquoi ? Il arrive que vous ayez besoin de mettre en place un petit espace de téléchargement (upload/download) pour stocker des fichiers sur votre site web. C'est en effet très pratique et peut dépanner quand vous n'avez pas de clé USB sous la... www.commentcamarche.net/faq/sujet-4308-webmaster-faire-facilement-un-espace-d-upload
Installer un serveur FTP sous UbuntuSommaire: 1. Installer le serveur FTP 2. Configurer le serveur FTP 2.1 Interdire le FTP anonyme 2.2 Autoriser les utilisateurs locaux à se connecter 2.3 Autoriser les utilisateurs à uploader des fichiers 2.3 Choisir l'interface 3.... www.commentcamarche.net/faq/sujet-6336-installer-un-serveur-ftp-sous-ubuntu

Résultats pour Upload de fichiers

Upload fichier - php (Résolu)Bonjour, Je suis en train de développer une application ou il sera possible d'uploader des fichiers sur le serveur Web. J'ai créé un formulaire qui me permet de demander à l'utilisateur de rentrer un fichier. Je récupère cette valeur... www.commentcamarche.net/forum/affich-8479355-upload-fichier-php
Adresse serveur distant upload fichier php (Résolu)Bonjour, J'ai créé en php un repertoire téléphonique, et j'y ai ajouté la possibilié de mettre une photo pour chaque contact... tout marche nickel en local, je choisi l'image sur le PC, la renomme avec l'id du contact et la place... www.commentcamarche.net/forum/affich-4290701-adresse-serveur-distant-upload-fichier-php
Upload fichier 2 endroits différents (Résolu)Bonjour à tous, Je souhaiterais uploader un fichier a 2 endroits différents tout en le renommant. J'ai donc trouver deux solutions mais ces 2 solutions me permettent uniquement de le déplacer dans un répertoire et non dans 2. voici la première... www.commentcamarche.net/forum/affich-4673115-upload-fichier-2-endroits-differents

Résultats pour Upload de fichiers

Télécharger SubdownloaderSubDownloader est une application de téléchargement et d'uploade de fichier. Il permet de trouver automatiquement des sous-titres pour les fichiers : DivX, MPEG, AVI, etc et les DVD. Chaques opérations s'effectuent très rapidement grâce à une... www.commentcamarche.net/telecharger/telecharger-34056737-subdownloader