Sommaire
Upload
Il est devenu récurrent dans un projet web d'être amené à créer une interface utilisateur permettant de mettre en ligne des fichiers sur le serveur web sans passer par un client FTP. On parle alors d'upload de fichier, ce qui correspond simplement au transfert du poste client vers le poste serveur d'un fichier via le protocole HTTP.
La librairie suivante dispose de toutes les méthodes permettant de gérer simplement la phase d'upload côté client, et surtout tous les traitements inhérents à cette pratique côté serveur.
Quoi qu'il en soit, l'upload de fichiers ne se résume jamais au seul codage d'un formulaire de transfert. De nombreux traitements doivent généralement être effectués, comme l'emploi de filtres restrictifs pour tester la validité d'un document en rapport avec le contexte du système d'information.
Dans cette optique, la classe suivante permet d'éviter la majorité des erreurs courantes lors de la création d'un système d'upload, mais fournit également une multitude de méthodes simples pour appliquer des filtres ou des traitements sur les documents après leur transfert.
Caractéristiques pour la gestion du formulaire de transfert :
- chargement d'un nombre infini de fichiers dans un seul formulaire,
- filtre sur les extensions,
- filtre sur les entêtes de fichiers suivant trois techniques :
- analyse des entêtes renvoyés par le navigateur,
- analyse via la librairie mime_magic,
- analyse via la librairie fileinfo
- filtre sur la hauteur / largeur maximale d'une image
Caractéristiques des post-traitements :
- récupération aisée des informations sur le fichier (poids, nom, emplacement, extension, entête...)
- possibilité de renommer complètement le fichier ou simplement de lui attribuer un préfixe ou un suffixe
- gestion du mode d'écriture (remplacement, copie...)
Sans oublier une gestion des erreurs exhaustive permettant de connaître rapidement les raisons d'un transfert échoué.
Toutes les options de configuration et toutes les possibilités de l'objet sont décrites dans le tutoriel Gestionnaire d'upload de fichier en PHP.Exemple de code
$Upload = new Upload();
// GESTION DES UPLOADS APRES SOUMISSION DU FORMULAIRE
if (!Empty($_POST['submit'])) {
if (!$Upload->Execute()) {
print 'Il y a eu une erreur.';
}
print 'Upload effectuée avec succès :';
exit;
}
// GESTION DU FORMULAIRE D'UPLOAD
$Upload->InitForm();
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<body>
<form method="post" enctype="multipart/form-data">
<?php
// Affichage du champ MAX_FILE_SIZE
print $Upload->Field[0];
// Affichage du champ de type FILE
print $Upload->Field[1] . '<br/>';
?>
<br/>
<input type="submit" value="Envoyer" name="submit"/>
</form>
</body>
</html>
Pré-requis
- PHP 5.x
- Optionnel : librairie PECL FileInfo, librairie MimeMagic
Téléchargement
License
Cette création est mise à disposition sous un contrat Creative Commons.
Cela signifie que vous êtes libre de reproduire, distribuer et communiquer cette création au public. Si vous disposez d'un site internet, il n'est nullement obligatoire mais serait grandement appréciable
de faire une référence à la présente page.
