dev-master
9999999-dev http://jem-dev.com/Téléchargement de fichiers / File upload management
CeCILL-2.1
The Requires
- php >=5.4.0
by Jean Molliné
library upload files images thumbnail namespace
Téléchargement de fichiers / File upload management
Attention, cette classe est livrée sans garantie. Développée rapidement pour répondre à un besoin interne à cause d'anomalies trop longue à corriger sur une librairie utilisée jusqu'alors, elle répond d'abord à mon besoin. Toute proposition d'amélioration sera prise en considération si elle conserve la simplicité d'utilisation., (*1)
Avec Composer, ajouter ce qui suit dans la partie require de votre composer.json:, (*2)
{ "jemdev/fichier": "dev-master" }
Cette classe permet de gérer l'envoi de fichiers par l'utilisation d'un formulaire. Il peut s'agir de fichiers textes, bureautique ou des images., (*3)
Des méthodes additionnelles permettent de retailler des images voire de créer des miniatures en réduisant proportionnellement les dimensions de l'image originale., (*4)
Chaque fichier devra ĂȘtre traitĂ© individuellement au cas oĂč certains paramĂštres seraient propres Ă chaque fichier, par exemple leur destination. Ă partir d'une instance de jemdev\fichier\upload, on dĂ©finit d'abord les paramĂštres si nĂ©cessaire. Notez que les mĂ©thodes de rĂ©glage des paramĂštres peuvent ĂȘtre chainĂ©es., (*5)
Sans paramétrage particulier, l'utilisation est on ne peut plus simple :, (*6)
Si plusieurs fichiers sont sélectionnés via un champ de type file avec l'attribut multiple, on pourra se retrouver alors avec le contenu de $_FILES ressemblant à ceci:, (*7)
Array( [fichier] => Array( [name] => Array( [0] => sites_publics.rar [1] => stats_jemweb.info.txt [2] => ZSST-20130331-140024.7z ) [type] => Array( [0] => application/octet-stream [1] => text/plain [2] => application/octet-stream ) [tmp_name] => Array( [0] => C:\Windows\Temp\phpD031.tmp [1] => C:\Windows\Temp\phpD042.tmp [2] => C:\Windows\Temp\phpD053.tmp ) [error] => Array( [0] => 0 [1] => 0 [2] => 0 ) [size] => Array( [0] => 140763 [1] => 29446 [2] => 2025976 ) ) )
Chacun des fichiers sera traitĂ© dans une boucle automatique et stockĂ© au mĂȘme endroit. Si on veut effectuer un traitement spĂ©cifique pour chacun en variant les paramĂštres de l'instance, il faudra effectuer la boucle en amont. Chaque tour de la boucle traitera donc un tableau semblable Ă celui-ci:, (*8)
Array( [name] => sites_publics.rar [type] => application/octet-stream [tmp_name] => C:\Windows\Temp\phpD031.tmp [error] => 0 [size] => 140763 )
On peut donc traiter le tableau en amont en préparant un tableau par fichier de la maniÚre suivante :, (*9)
Notez que si le répertoire de destination n'existe pas, il sera créé. Par défaut, les droits d'accÚs à ce répertoire seront définis à 0755 (chmod), ceux des fichiers à 0644. On peut modifier ce mode avant l'enregistrement. Par exemple si on veut que le fichier soit défini à 0777 :, (*10)
$oUpload = new jemdev\fichier\upload(); $oUpload->setDroitAccesFichier(0777); //... la suite du code de traitement ne change pas.
Les fichiers envoyĂ©s peuvent ĂȘtre des images et peuvent, si nĂ©cessaire, ĂȘtre redimensionnĂ©s. On peut Ă©galement gĂ©nĂ©rer une miniature indĂ©pendamment du fichier original dans un rĂ©pertoire distinct., (*11)
Les méthodes de traitement d'images ne seront pas accessible lors d'envoi de fichiers multiples., (*12)
On peut au préalable indiquer les dimensions maximales de l'image normale ainsi que la hauteur maximale de la vignette. Le cas échéant, les retailles de l'image originale seront proportionnelles., (*13)
Le mĂȘme principe que pour tout fichier est mis en Âuvre pour l'enregistrement de l'image : on peut y rajouter la crĂ©ation d'une miniature en indiquant un rĂ©pertoire de stockage distinct, par exemple un sous-rĂ©pertoire dans celui contenant l'image normale., (*14)
Pour un fichier simple, on peut ainsi créer une miniature en indiquant le chemin vers le répertoire approprié pour les miniatures, suivez les commentaires dans l'exemple de code ci-dessous)., (*15)
Ce systÚme est trÚs basique pour une utilisation quotidienne. N'hésitez pas à proposer des améliorations si toutefois elles ne compliquent pas son utilisation., (*16)
My english level is not sufficient to write a good documentation in english. But if you're natively english speaking and understanding well french, please, feel free to write a translation. Enjoy this library., (*17)
Téléchargement de fichiers / File upload management
CeCILL-2.1
library upload files images thumbnail namespace