fbpx
i

Class aptent taciti sociosqu
ad litorato rquent per conubia nostra

icone-cours-time-80

14h

icone-cours-level-intermediaire-80

niveau
intermédiaire

puis 25€ /mois

icone-cours-time-80

14h

icone-cours-level-intermediaire-80

niveau
intermédiaire

puis 25€ /mois

icone-cours-time-80

14h

icone-cours-level-intermediaire-80

niveau
intermédiaire

puis 25€ /mois

L'objectif de ce module est d'exploiter la puissance de PHP concernant certaines opérations sur les fichiers comme l'upload, l'extraction, la copie, le renommage, la suppression.

 

Les étapes suivantes sont typiques, par exemple, d'un système de galeries de photos (et dont le projet final du cours pourrait servir de base):

 

1) Mettre en place un formulaire d'upload
2) Uploader le fichier avec la superglobale $_FILES
3) Restreindre aux fichiers de type zip
4) Déplacer (en renommant) à l'aide de la fonction native move_uploaded_file
5) Extraire (seulement les images) avec la classe ZipArchive (disponible depuis php5)
6) Supprimer le zip uploadé
7) Et éventuellement, créer des copies miniatures des images

Part #1 - Uploader un fichier sur le serveur

Mise en place du formulaire

Si vous n’aviez pas vu précisément, dans le cours sur HTML, comment écrire un formulaire permettant l’upload de fichier, il suffit de spécifier un attribut enctype comme le montre l’exemple ci-dessous (et bien sûr un input de type file):

À propos des restrictions de poids de fichier

– Le champ caché MAX_FILE_SIZE

Vous pourriez voir un input hidden spécifiant une valeur maximum (mesuré en octets) mais elle n’a aucun effet. Il est donc inutile de l’appliquer.

– Directive upload_max_filesize du fichier php.ini

Cette directive, en revanche, fonctionne parfaitement et vous pouvez augmenter sans problème la taille qui est à 2mo par défaut.

Part #2 - Opérations communes sur les fichiers et dossiers

Informations sur les fichiers

La fonction pathinfo() retourne des informations sur le chemin (fichier ou dossier), sous forme de chaine ou de tableau associatif.

Un exemple:

Pour récupérer directement seulement le nom du fichier (avec son extension), vous pouvez directement faire:

$baseName = pathinfo(‘/www/htdocs/inc/lib.inc.php’)[‘basename’];

Part #4 - La classe ZipArchive

Avec la classe ZipArchive disponible depuis la version 5.2 du langage, vous pouvez aussi bien extraire que créer de nouvelles archives.

Si l’extension n’est pas installée par défaut, en fonction de votre version de php, il faudra exécuter la commande suivante (toujours sous base Debian):

apt install php7.2-zip

Faire un dézippage standard

Il est devenu très simple et rapide de manipuler les archives zip. Quatre lignes de code seulement suffisent à faire un dézippage.

Certificat de réussite