Gestion de fichiers
|
Cette fonction est obsolète. Utiliser à la place la fonction PHP file_get_contents
La fonction prend deux arguments :
- Le nom du fichier (chemin complet)
- Le contenu à écrire dans le fichier
si le fichier existe déjà, il est écrasé et ~writefile() y insère le nouveau contenu.
Code d'erreur renvoyé par la fonction :
- -1 : impossible d'ouvrir le fichier en écriture
- -2 : un problème est survenu pendant l'écriture du fichier
Exemple d'utilisation de la fonction :
~writefile("liste.dat", "foobar")
La fonction procède à un vérouillage informatif du fichier. Si deux processus utilisent cette fonction en même temps le fichier ne sera pas un mix des deux écritures mais bien le résultat de la seconde écriture.
Cette fonction est obsolète. Utiliser la fonction deletemask à la place.
Cette fonction permet de supprimer des fichiers récursivement.
Elle prend quatre paramètres:
- le répertoire de base
- un masque sur le nom des répertoires à NE PAS EFFACER. (Optionnel. Par défaut l'effacement concerne tous les répertoires)
- un masque sur le nom des fichiers à effacer (Optionnel. Par défaut tous les fichiers seront effacés)
- effacement des répertoires vides. (Optionnel. Par défaut les répertoires vides ne sont pas effacés)
0 ou FALSE: les répertoires vides ne sont pas effacés.
Exemple d'arborescence:
.
|-- 000.jpg
|-- musiques
| |-- Beethoven, symphonie No 6.mp3
| `-- Brassens, Le gorille.mp3
|-- photos
| |-- alice
| | |-- 001.jpg
| | `-- 002.jpg
| `-- bob
| |-- 001.jpg
| `-- 002.jpg
`-- videos
|-- charlie.avi
`-- fun.mpg
Exemple 1:
deletemask("videos")
Tous les fichiers de "videos" sont effacés.
Exemple 2:
deletemask("./","/videos/")
Tous les fichiers de "musiques" et de "photos" sont effacés ainsi que 000.jpg; les fichiers de "videos" sont conservés.
Exemple 3:
deletemask("./","","/\.jpg$/")
Tous les fichiers jpg sont effacés.
Exemple 4:
deletemask("./","","/\.m/",TRUE)
Les fichiers mp3 et mpg sont effacés. Le répertoire "musiques" devenu vide est également supprimé.
Exemple 5:
deletemask("./","","/\/00[^\/]*\.jpg$/")
Tous les fichiers jpg dont le nom commence par 00 sont effacés.
Le masque sur le nom des répertoires et masque sur le nom de fichiers est testé en incluant le chemin complet depuis la base indiquée.
Les fichiers et répertoires sont vus par les masques avec un slash ('/') au début.
Ex: le fichier photo/alice/001.jpg est vu par le masque comme "/photo/alice/001.jpg" et le fichier 000.jpg est vu comme "/000.jpg"
Exemple 6:
deletemask("./","","/00")
deletemask("repertoire/de/base/")
Tous les fichiers dont le nom commence par 00 sont effacés ainsi que ceux qui contiennent "/00" dans le nom complet relatif à la base indiquée.
Si le masque n'est pas une expression rationnelle le masque est transformé en expression rationnelle.
Les caractères '/' et '.' (point) sont précédés d'un '\' et la chaine est encadrée de '/'
Dans l'exemple 6, le masque sera vu par preg_match comme "/\/00/"
La fonction deletepath permet d'effacer une arborescence complète.
Elle prend un seul paramètre qui est le chemin à effacer.
Exemple:
deletepath("photos")
Tout le contenu de "photos" est effacé y compris les répertoires.
Cette fonction est équivalent à:
deletemask("photos","","",1)
La fonction copie récursivement une arborescence.
La fonction ~copy peut prendre deux ou trois arguments :
- le fichier ou le répertoire source
- le répertoire destination
- copie non destructrice. (Optionel)
- TRUE ou différent de 0: la fonction sauvegarde les fichiers existants lors de la copie des fichiers.
- autre: la fonction écrase les fichiers existants lors de la copie des fichiers.
Lorsque le paramètre de sauvegarde est activé, la fonction renvoie la liste des fichiers qui ont été sauvegardés.
La fonction ne renvoie aucun code d'erreur
Exemple d'utilisation de la fonction :
~copy("template/", "backup/", 1)
Cette fonction permet de charger un fichier en HTTP.
Elle prend deux paramètres:
- l'url à télécharger
- un nom de répertoire ou de fichier optionnel.
- Si le paramètre est un répertoire le fichier est sauvegardé dans ce répertoire sous le nom indiqué dans le protocole ou à défaut par le nom extrait de l'url.
- Si le paramère est un nom de fichier, le fichier est sauvegardé sous ce nom.
- Si le paramètre est absent la fonction retourne le fichier lui même
En cas d'erreur la fonction retourne:
- -1: erreur ouverture de la connexion
- -2: erreur en ouverture du fichier à écrire
- -3: erreur de syntaxe
Exemple 1:
~getwebfile("http://www.example.com/image.jpg","./download/")
Le fichier image.jpg est sauvegardé dans le répertoire download sous le nom indiqué dans l'entête HTTP 'Content-disposition: attachment; filename=' si elle existe ou à défaut "image.jpg".
Exemple 2:
~getwebfile("http://www.example.com/image.jpg","./download/monimage.jpg"
Le fichier est sauvegardé sous le nom "monimage.jpg" dans le répertoire "download".
Exemple 3:
xml=getwebfile("http://www.example.com/fichier.xml")
Le contenu du fichier téléchargé est affecté à la variable xml pour pouvoir être analysé ensuite.
L'ordre des paramètres est changé par rapport à Templeet 3.5
La fonction sendfile permet d'envoyer le contenu d'un fichier.
Fonctionnellement cette fonction est équivalente à file_get_contents. La différence se situe au niveau de l'occupation mémoire. Avec file_get_contents le contenu est évalué par Templeet; le contenu du fichier est donc chargé intégralement. Si la taille du fichier dépasse la quantité de mémoire allouée à PHP alors celui ci s'arrête.
Avec la fonction sendfile, le contenu d'un fichier peut être envoyé au client quelle que soit sa taille. Le contenu du fichier ne passe par l'évaluation de Templeet. Le fichier est ouvert mais n'est envoyé qu'à la fin du processus Templeet après les évaluations.
La fonction retourne:
- 0 si le fichier est ouvert correctement
- -1 si il y a une erreur en ouverture du fichier
- -2 si la fonction sendfile a déjà été appelée. On ne peut envoyer qu'un fichier à la fois; La fonction ne peut donc être appelée qu'une seule fois.
Exemple:
sendfile("./mon_fichier_a_envoyer")