Upload Ajax-Php, version 7.4Rappel pour les nouveaux lecteurs ou utilisateurs :
Tous les exemples fournis dans le dossier proposé en téléchargement sont entièrement fonctionnels. Il suffit de décompresser le zip et de poser le dossier
Upload-Ajax-ABCI sur un serveur Php pour faire les premiers essais.
Notez qu'il est possible de configurer un script en quelques lignes de code aussi bien côté client que côté serveur. Voir
ce tuto pour plus d'informations. Les options de configuration, les fonctions et les styles événementiels servent uniquement pour personnaliser le retour d'information en temps réel et pour répondre aux besoins les plus divers.
Important :
Cette mise à jour peut être appliquée de façon transparente à partir de la version 7.0.
Classe JavascriptAjoutAjout d'une option de configuration : config.RevokeObjectURL=true.
La méthode "RevokeObjectURL" est utilisée par défaut pour supprimer la référence au fichier lors de la création des vignettes de prévisualisation, et permettre une meilleure efficacité du nettoyage des ressources. Si =
false cette référence n'est pas supprimée, ce qui permet si besoin de cloner l'objet "infosFile" qui contient les informations spécifiques au fichier, pour pouvoir ensuite le déplacer dans le DOM tout en préservant la vignette de prévisualisation.
CorrectionCorrection d'un bug d'affichage avec la fonctionnalité "arrêtez-tout" et les fichiers précédemment téléchargés.
Depuis la version 7.0, la fonctionnalité "arrêtez-tout" (proposée par la classe html prédéfinie
UpAbci_stopAll) déclenchait le style événementiel
data-upabcicss-result-stop (si défini) et affichait le status "arrêt" pour les fichiers précédents déjà téléchargés avec succès en cas d'upload multiple. C'est corrigé, puisqu'ils sont déjà téléchargés leur état ne doit pas changer. Notez que cela provoquait uniquement un bug d'affichage, mais sans conséquence pour l'upload des fichiers.
Améliorations1/ Amélioration du comportement du style événementiel
data-upabcicss-result-partial.
Ce style événementiel ne se déclenche plus lorsqu'on stoppe la soumission du fichier avant la soumission du formulaire, même si le fichier dispose d'une sauvegarde. Il n'est éventuellement déclenché qu'après que le fichier soit traité par le serveur et donc après la soumission du formulaire. Ceci afin d'obtenir une différence de comportement plus marquée par rapport au style événementiel
data-upabcicss-backup qui peut s'afficher également avant la soumission du formulaire et également dès la sélection des fichiers si le fichier dispose d'une sauvegarde. Il est ainsi possible de différencier une nouvelle sauvegarde créée ou complétée durant le processus d'upload par rapport à une sauvegarde déjà existante, lors de l'utilisation des fonctions d'arrêt.
Notez que cette modification de comportement n'a pas eu d'impact sur mes exemples de code qui utilisaient ce style. Cela ne devrait donc pas gêner la grande majorité des codes existants.
2/ Modification de l'affichage du status du fichier avec la fonctionnalité "arrêtez-tout" pour les fichiers non valides.
La fonctionnalité "arrêtez-tout" ne modifient plus le status du fichier (bloc html ayant la classe prédéfinie "UpAbci_status") pour les fichiers non valides, alors qu'auparavant elle le renseignait avec la valeur de "info.status.stop" ("Arrêt" par défaut). C'était anachronique, car ces fichiers étant déjà annoncés comme non valides, on ne s'attendait plus à voir de changement d'état. Cette nouvelle approche est plus cohérente et permet de faire la distinction entre les fichiers non valides arrêtés automatiquement et les fichiers arrêtés volontairement par l'utilisateur.
Aucune modification n'a été faite concernant le bouton d'arrêt spécifique à chaque fichier, puisqu'en cas de fichier non valide, la fonctionnalité d'arrêt n'est pas activée étant donné que le fichier est arrêté automatiquement, donc le problème ne se posait pas.
3/ Amélioration du format accepté dans les options de configuration
config.filesExtensions et
config.filesExtensionsInput.
Le tableau passé en paramètre accepte maintenant des extensions précédées ou non d'un point (précédemment les extensions devaient être indiquées sans point). Etant donné que ces extensions sont insensibles à la casse, les tableaux suivants sont identiques :
['.jpg', 'JPEG', '.PNG'] = ['jpg', 'jpeg', 'png']
C'est plus pratique pour créer des formulaires dynamiquement car l'attribut "accept" des champs de type file, demande d'indiquer les extensions précédées d'un point.
4/ Modification du setTimeout qui sépare l'envoi de requêtes ajax.
Un setTimeout est utilisé pour espacer les requêtes ajax afin d'éviter de saturer un serveur local. Il n'était précédemment pas appliqué entre deux fichiers mais uniquement pour les gros fichiers qui nécessitent plusieurs requêtes ajax pour un chargement complet. C'est corrigé pour le principe. Par ailleurs j'ai passé la valeur du délai - option de configuration
config.ajaxTimeOut - à 250 millisecondes par défaut contre 500 précédemment.
Classes PHPAjoutAjout d'une méthode surchargeMessages
La classe
SetMessages propose maintenant une méthode
surchargeMessages, pratique pour traduire des messages à la volée sans avoir besoin de modifier la classe
Messages. Cette méthode est détaillée dans
ce nouveau paragraphe du mode d'emploi qui décrit la gestion des messages côté serveur.
CorrectionCorrection de la classe serveur
UploadAjaxABCIServeur.php. Il était impossible de télécharger des fichiers supérieurs à 2 Go si l'on utilisait une version php < 7. La faute à
intval(), introduit depuis la version 5.0 de cette classe et qui renvoyait n'importe quoi pour ces grands nombres, ce qui a été corrigé avec php7. Pour être complet, le bug se produirait certainement avec php >= 7 et un système d'exploitation 32bits, mais je ne suis pas en mesure de tester ce cas de figure improbable de nos jours.
Ceux qui ont une version >= 5.0 et < 7.0 de ce module d'upload, ne pourront pas appliquer cette mise à jour de façon transparente car certaines propriétés ont été renommées, je donne donc la ligne de code à remplacer dans le fichier Php_Upload/Classes/UploadAjaxABCIServeur.php :
$this->cookie_filesize = isset($cook_save[1]) ? intval($cook_save[1]) : 0; à remplacer par
$this->cookie_filesize = isset($cook_save[1]) && is_numeric($cook_save[1]) ? $cook_save[1] : 0;AméliorationsLa méthode
verifExtensions accepte maintenant un tableau d'extensions précédées ou non d'un point, par analogie avec la modification des options javascript correspondantes citées plus haut.
Exemples fournisAméliorations1/ Les exemples customisés
UploadAjaxABCI_Custom.php et
UploadAjaxABCI_Custom_VerifFileExist.php ont été revus et simplifiés. Par ailleurs, le second cité qui vérifie les fichiers existants sur le serveur avant l'upload, propose maintenant une option sous forme d'une case à cocher dans le formulaire, qui permet d'écraser les fichiers existants en connaissance de cause.
J'ai également ajouté des symboles graphiques dans les codes couleur (rouge, orange, vert) qui symbolisaient l'échec, l'existence d'une sauvegarde, ou le succès du téléchargement des fichiers dans ces formulaires, pour être compréhensible par ceux qui ont des problèmes visuels (daltoniens).
2/ L'exemple
UploadAjaxABCI_Redimensions_Album.php de création d'album photo a également été amélioré.
3/ Suppression des commentaires et exemples de code qui proposaient de configurer l'option javascript
config.imgPreviewUseFileReader à
true pour la création des vignettes de prévisualisation des images avec le navigateur Firefox. L'équipe Mozilla a corrigé ce bug aléatoire qui se produisait (parfois oui, parfois non) avec ce navigateur quand on utilise l'objet createObjectURL() pour la prévisualisation des images, ce qui est le cas par défaut pour la classe Javascript.
4/ Tous les exemples ont été vérifiés avec le validateur w3c et sont maintenant valides html5.
Certains exemples,
UploadAjaxABCI_Champs_Sup_Notation.php ainsi que
UploadAjaxABCI_Crop_multiple.php et
UploadAjaxABCI_Crop_multiple_multiple.php avaient une ou deux petites erreurs dans la déclaration des styles mais qui n'étaient pas visibles à l'affichage.
Par habitude, je spécifiais aussi le type "text/css" dans la balise
style dans presque tous les fichiers et le code javascript était parfois placé après la balise body, ce qui renvoyait respectivement un warning et une erreur de la part du validateur w3c. Ce n'était pas problématique mais c'est corrigé pour le principe.
Mode d'emploiLe mode d'emploi a été revu, marginalement corrigé, principalement complété notamment pour la partie serveur. Ce mode d'emploi disponible
en ligne, est équivalent au fichier
index.html du
dossier complet proposé en téléchargement.
Voilà Petit récapitulatif : 1/ Pour ceux qui utilisent une version >= 7.0 de ce module d'upload : il est conseillé de faire une mise à jour vers la version 7.4. Cependant, cela ne vous apportera une amélioration sensible que si le formulaire installé propose la fonctionnalité "arrêter tout" qui produira un affichage erroné en cas d'utilisation de cette fonction en cours d'upload après le téléchargement réussi d'un premier fichier dans un upload multiple, ou si vous utiliser une version de php inférieure à la version 7.0 et que vous souhaitez télécharger des fichiers supérieurs à 2 Go.
2/ Pour ceux qui utilisent une version >= 5.0 et < 7.0 de ce module d'upload,
et qui utilisent une version de php inférieure à version 7.0,
et qui souhaitent pouvoir télécharger des fichiers supérieurs à 2 Go, voir le correctif de la classe php.
Pour les nouveaux développements, utilisez de préférence la version 7.4.
2 |
0 |