Zend_File_TransferZend_File_Transfer permet aux développeurs de contrôler l'upload de fichiers mais aussi le téléchargement. Il vous permet d'utiliser les validateurs incorporés pour le traitement de fichier et même la possibilité de changer les fichiers avec des filtres. Zend_File_Transfer fonctionne avec des adaptateurs ce qui vous permet d'utiliser la même API pour différents protocoles de transfert HTTP, FTP, WEBDAV et plus encore.
L'utilisation de Zend_File_Transfer est assez simple. Il consiste en deux parties. Le formulaire HTTP qui réalise l'upload, et la gestion des fichiers uploadés avec Zend_File_Transfer. Regardez l'exemple suivant : Example #1 Formulaire simple d'upload de fichier Cet exemple illustre un upload de fichier basique avec Zend_File_Transfer. La première partie est le formulaire. Dans notre exemple, il n'y a qu'un seul fichier que nous souhaitons uploadé. <form enctype="multipart/form-data" action="/file/upload" method="POST"> <input type="hidden" name="MAX_FILE_SIZE" value="100000" /> Choose a file to upload: <input name="uploadedfile" type="file" /> <br /> <input type="submit" value="Upload File" /> </form> Notez que vous devriez utiliser Zend_Form_Element_File par simplicité plutôt que de créer le HTML manuellement.
L'étape suivante est de créer le récepteur de l'upload. Dans notre exemple le
récepteur est "
Comme vous le voyez, l'utilisation la plus simple est de définir une destination
avec la méthode
Adaptateurs supportés par Zend_File_TransferZend_File_Transfer est construit pour supporter différents adaptateurs et différentes directions. Il est conçu pour permettre l'upload, le téléchargement et même l'envoi bidirectionnel (upload avec un adaptateur et télécharge avec un autre adaptateur en même temps) de fichiers. Options de Zend_File_TransferZend_File_Transfer et ses adaptateurs supportent plusieurs options. Vous pouvez paramétrer toutes les options soit en les fournissant au constructeur, ou en utilisant setOptions($options). getOptions() retournera les options actuellement paramétrées. Ci-dessous, vous trouverez la liste des options supportées :
Vérification des fichiersZend_File_Transfer possède plusieurs méthodes qui permettent de vérifier suivant différentes considérations. Ceci est particulièrement utile quand vous devez travailler avec des fichiers qui ont été uploadés.
Example #2 Vérification de fichiers
Informations complémentaires sur les fichiersZend_File_Transfer peut fournir de multiples informations complémentaires sur les fichiers. Les méthodes suivantes sont disponibles :
getFileName() accepte le nom d'un élément entant que premier paramètre. Si aucun n'est fourni, tous les fichiers connus seront retournées sous la forme d'un tableau. Si le fichier est un "multifile", vous le récupérerez aussi sous la forme d'un tableau. S'il n'y a qu'un seul fichier alors une chaîne sera retournée. Par défaut les noms de fichier sont retournés avec leur chemin d'accès complet. Si vous souhaitez seulement le nom de fichier sans le chemin, vous pouvez paramétrer le second paramètre $path à FALSE ce qui tronquera le chemin. Example #3 Récupération du nom de fichier
getFileSize() retourne par défaut la taille réelle d'un fichier en
notation SI ce qui signifie que vous récupérerez Example #4 Récupération de la taille de fichier
getHash() accepte le nom de l'algorithme de hachage en tant que
premier paramètre. Pour avoir une liste des algorithmes connus, regardez » la méthode hash_algos de
PHP. Si vous ne fournissez aucun algorithme, celui par défaut sera
Example #5 Récupération d'un hash de fichier
getMimeType() retourne le type MIME d'un fichier. Si plus d'un fichier a été uploadé, elle retourne un tableau, sinon c'est une chaîne. Example #6 Récupération du type MIME de fichier
Warning
Exception possibleNotez que cette méthode utilise l'extension fileinfo si elle est disponible. Si elle n'est pas trouvé, elle utilise l'extension mimemagic. Quand aucune extension n'est fournie, une exception est levée. Warning
Original data within $_FILESDue to security reasons also the original data within $_FILES will be overridden as soon as Zend_File_Transfer is initiated. When you want to omit this behaviour and have the original data simply set the detectInfos option to FALSE at initiation. This option will have no effect after you initiated Zend_File_Transfer. Progress for file uploads
Zend_File_Transfer can give you the actual state of a fileupload in progress. To use
this feature you need either the APC extension which is provided with most default
PHP installations, or the
First, you need to have either APC or Second, you need to have the proper hidden fields added in the form which sends the files. When you use Zend_Form_Element_File this hidden fields are automatically added by Zend_Form.
When the above two points are provided then you are able to get the actual progress of the
file upload by using the Using a progressbar adapterYou can use the convinient Zend_ProgressBar to get the actual progress and can display it in a simple manner to your user. To archive this, you have to add the wished Zend_ProgressBar_Adapter to getProgress() when you are calling it the first time. For details about the right adapter to use, look into the chapter Zend_ProgressBar Standard Adapters. Example #7 Using the progressbar adapter to retrieve the actual state
The complete handling is done by getProgress() for you in the background. Using getProgress() manuallyYou can also work manually with getProgress() without the usage of Zend_ProgressBar. Call getProgress() without settings. It will return you an array with several keys. They differ according to the used PHP extension. But the following keys are given independently of the extension:
All other returned keys are provided directly from the extensions and will not be checked. The following example shows a possible manual usage: Example #8 Manual usage of the file progress
|