|
|
Zend_File_Transfer est fourni avec de multiples filtres qui peuvent être utilisés pour réaliser
différentes tâches qui doivent être réalisées souvent sur les fichier. Notez que tout filtre est appliqué après la
validation. De plus les filtres de fichiers se comportent légèrement différemment des autres filtres. Ils
retourneront toujours le nom de fichier et non le contenu modifié (ce qui serait une mauvaise idée en travaillant
avec un fichier d'1Go par exemple). Tous les filtres fournis avec Zend_File_Transfer peuvent être
trouvés dans le composant Zend_Filter et sont nommés Zend_Filter_File_*. Les filtres
suivants sont actuellement disponibles :
LowerCase : ce filtre peut mettre en minuscule le contenu d'un fichier texte.
Rename : ce filtre peut renommer les fichiers, changer leur localisation et même forcer
l'écrasement de fichiers existants.
UpperCase : ce filtre peut mettre en majuscule le contenu d'un fichier texte.
Zend_File_TransferL'utilisation des filtres est assez simple. Il existe de multiples méthodes pour ajouter et manipuler les filtres.
addFilter($filter, $options = null, $files = null) : ajoute le filtre à la pile des
filtres (optionnellement seul le(s) fichier(s) spécifié(s)). $filter peut être soit une
instance d'un filtre réel, ou un nom court spécifiant le filtre (par exemple, "Rename").
addFilters(array $filters, $files = null) : ajoute les filtres à la pile des filtres.
Chaque entrée peut être soit une paire type/options, ou un tableau avec la clé "filtre" spécifiant le
filtre (tous les autres options seront considérées comme des options du filtre au moment de
l'instanciation).
setFilters(array $filters, $files = null) : surcharge les filtres existants avec les
filtres spécifiés. Les filtres doivent respecter la même syntaxe addFilters().
hasFilter($name) : indique si le filtre est enregistré.
getFilter($name) : retourne un filtre préalablement enregistré.
getFilters($files = null): retourne les filtres enregistrés ; si $files
est fourni, retourne les filtres pour ce fichier en particulier ou pour tous les fichiers.
removeFilter($name): enlève le filtre préalablement enregistré.
clearFilters(): efface tous les filtres.
Example #1 Ajouter les filtres au fichier transféré
$upload = new Zend_File_Transfer();
// Paramètre un dossier de destination
$upload->addFilter('Rename', 'C:\image\uploads');
// Paramètre un nouveau dossier de destination
// et surcharge pour les fichiers existants
$upload->addFilter('Size', array('C:\image\uploads', 'overwrite' => true));
Example #2 Limiter les filtres à des fichiers uniques
addFilter(), addFilters(), and setFilters() accepte chacun un
argument final $files. Cet argument peut être utilisé pour spécifier un fichier en particulier
ou un tableau de fichiers sur lequel appliqué le filtre donné.
$upload = new Zend_File_Transfer();
// Paramètre un nouveau dossier de destination et
// le limite seulement à "file2"
$upload->addFilter('Rename', 'C:\image\uploads', 'file2');
Généralement vous devriez simplement utiliser la méthode addFilters(), qui peut être appelée
plusieurs fois.
Example #3 Ajouter des filtres multiples
Souvent il est plus simple d'appeler plusieurs fois addFilter() : un appel pour chaque
filtre. Ceci améliore aussi la lisibilité et rend votre code plus maintenable. Comme toutes les méthodes
fournissent un interface fluide, vous pouvez enchaîner les appels comme montré ci-dessous :
$upload = new Zend_File_Transfer();
// Renommer différemment chacun des fichiers
$upload->addFilter('Rename', 'file1', 'C:\picture\newjpg')
->addFilter('Rename', 'file2', 'C:\picture\newgif');
Note:
Notez que même si l'ajout du même filtre plusieurs fois est autorisé, faire ceci peut entraîner des problèmes si vous utilisez différentes options pour le même filtre.
Le filtre LowerCase vous permet de mettre en minuscule le contenu d'un fichier. Vous devriez
utiliser ce filtre seulement sur les fichiers texte.
Example #4 Utiliser le filtre LowerCase
$upload = new Zend_File_Transfer_Adapter_Http();
$upload->addValidator('MimeType', 'text');
// Ajoute un filtre pour mettre en minuscule les fichiers texte uploadés
$upload->addFilter('LowerCase');
// Ajoute un filtre pour mettre en minuscule seulement le fichier uploadé "uploadfile1"
$upload->addFilter('LowerCase', null, 'uploadfile1');
Note:
Notez que comme il n'y pas d'options pour le filtre LowerCase, vous devez fournir un
nullen second paramètre quand vous souhaitez limiter le filtre à un fichier unique.
Le filtre Rename vous permet de changer le dossier de destination du fichier uploadé, de
changer le nom de fichier et aussi d'écraser des fichiers existants. Il supporte les options suivantes :
source : le nom et le dossier de l'ancien fichier qui doit être renommé.
target : le nouveau dossier ou nom du fichier.
overwrite : paramètre si l'ancien fichier écrase le nouveau fichier s'il existe
déjà. La valeur par défaut est false.
De plus vous pouvez utiliser la méthode setFile() pour paramétrer des fichiers, ce qui
effacera ceux précédemment paramétrés, addFile() pour ajouter un nouveau fichier à ceux déjà
présent, et getFile() pour récupérer les fichiers actuellement paramétrés. Pour simplifier les
choses, ce filtre accepte de multiples notations et ces méthodes et constructeur comprennent les mêmes
notations.
Example #5 Utiliser le filtre Rename
$upload = new Zend_File_Transfer_Adapter_Http();
// Paramètre un nouveau dossier pour tous les fichiers
$upload->addFilter('Rename', 'C:\mypics\new');
// Paramètre un nouveau dossier seulement pour uploadfile1
$upload->addFilter('Rename', 'C:\mypics\newgifs', 'uploadfile1');
Vous pouvez utiliser différentes notations. Ci-dessous vous trouverez une table fournissant la description et le but des notations supportées. Notez que quand vous utilisez l'"Adapter" ou le "Form Element", vous ne pourrez pas utiliser toutes les notations décrites.
| notation | description |
|---|---|
| addFile('C:\uploads') | Spécifie un nouveau dossier pour tous les fichiers quand la chaîne est un dossier. Notez que vous aurez une exception si le fichier existe déjà, voir le paramètre d'écrasement. |
| addFile('C:\uploads\file.ext') | Spécifie un nouveau dossier et un nom de fichier pour tous les fichiers quand la chaîne n'est pas un dossier. Notez que vous aurez une exception si le fichier existe déjà, voir le paramètre d'écrasement. |
| addFile('C:\uploads\file.ext', 'overwrite' => true) | Spécifie un nouveau dossier et un nom de fichier pour tous les fichiers quand la chaîne n'est pas un dossier et écrase le fichier existant si celui-ci existe. Notez que vous aurez pas de notification en cas d'écrasement. |
| addFile(array('source' => 'C:\temp\uploads', 'target' => 'C:\uploads')) | Spécifie un nouveau dossier pour tous les fichiers qui sont présent dans l'ancien dossier quand la chaîne est un dossier. Notez que vous aurez une exception si le fichier existe déjà, voir le paramètre d'écrasement. |
| addFile(array('source' => 'C:\temp\uploads', 'target' => 'C:\uploads', 'overwrite' => true)) | Spécifie un nouveau dossier pour tous les fichiers qui sont présent dans l'ancien dossier quand la chaîne est un dossier. Notez que vous aurez pas de notification en cas d'écrasement. |
Le filtre UpperCase vous permet de mettre en minuscule le contenu d'un fichier. Vous devriez
utiliser ce filtre seulement sur les fichiers texte.
Example #6 Utiliser le filtre UpperCase
$upload = new Zend_File_Transfer_Adapter_Http();
$upload->addValidator('MimeType', 'text');
// Ajoute un filtre pour mettre en majuscule les fichiers textes uploadés
$upload->addFilter('UpperCase');
// joute un filtre pour mettre en minuscule seulement le fichier uploadé "uploadfile1"
$upload->addFilter('UpperCase', null, 'uploadfile1');
Note:
Notez que comme il n'y pas d'options pour le filtre UpperCase, vous devez fournir un
nullen second paramètre quand vous souhaitez limiter le filtre à un fichier unique.
|
|
Copyright © 2005-2011 Zend Technologies Inc (compiled by mikaelkael with ZFDocumentor - SVN 12579).

