Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Téléchargez Discussion :

Upload de gros fichiers par fragments (chunk)


Sujet :

Téléchargez

  1. #201
    Expert éminent
    Citation Envoyé par userweb Voir le message
    ABCIWEB,

    Donc je reviens sur ce post ; il y a une erreur au niveau de l'alinéa suivant : $val = str_replace([',',' '],['.',''],$val);
    Le serveur Wamp me retourne une erreur à partir du fichier .php dénommé UploadABCIServices.php
    Dois-je ajouter un quotat spécifique au sein de cette variable afin de visualiser les modèles d'exemples car
    il n'y a que le fichier index.html explicatif qui est visible à l'écran et non les fichiers de type .php .
    En te souhaitant une excellente journée .
    Il est fort probable que tu utilises une version de php périmée. Tu peux connaitre ce numéro de version en cliquant sur l'icone de wamp qui s'affiche, après qu'il soit lancé, à droite dans la barre des tâches du pc (souvent dans les icônes cachées).

    Les classes php de ce module d'upload nécessitent au minimum la version php 5.5, (voire peut-être également la version php 5.4 mais je n'ai plus cette version pour faire des tests exhaustifs).

    D'après tes explications, php ne reconnait pas la notation tableau avec les crochets "[]", ce qui voudrait dire que tu emploies une version php égale ou inférieure à la version 5.3. Il est plus que temps de te mettre à jour ! Si tu consulte les versions de php (en cliquant ensuite sur "Développer") tu constateras que même la version 5.5 n'est plus supportée actuellement.

    Donc si tu veux rester en php5, il faudrait installer au minimum la version 5.6 qui supporte encore les correctifs de sécurité, et pour les mêmes raisons, installer au minimum la version la version 7.1 si tu veux passer à php7. Et c'est d'ailleurs ce que propose wamp actuellement avec la version 5.6.31 et la version 7.1.9. Si donc tu as une ancienne version de wamp, désinstalles-la (avec les précautions d'usage) et utilises cette nouvelle version pour que tout fonctionne.

  2. #202
    Invité
    Invité(e)
    Merci pour ton retour courriel ; après vérification il me semble que la version de Wamp que j'utilise
    est outdaté donc je vais passer à une version plus récente .
    Je reviendrai sur ce post si j'ai une autre demande en rapport avec l'utilisation dudit système
    d'upload Drag and Drop .
    Merci pour ton aide et ton support à ce niveau .

  3. #203
    Invité
    Invité(e)
    Je reviens sur ce post en rapport avec ma demande .
    Donc premièrement je te souhaite une excellente année;
    et voici un récapitulatif de la mise en fonction du système
    d'upload de type "drag and drop" .
    J'avais la version Wamp 2.2 sous Windows 8.1 donc inutilisable
    pour mettre en fonction cette application .
    Après différente installation et désinstallation de Wamp Server
    (version ajournée et ancienne version 2.3 ) et remise à niveau
    système donc tentative non fonctionnelle de part le non
    démarrage de Wamp ( Icône orange ) et impossible de passer
    au vert malgré diverses modifications .
    Donc réinstallation de Wamp 2.2 toutefois j'ai downloader l'upgrade
    mais sans l'installer pour le moment car si j'ai le même problème
    cela ne sert à rien de passer à une autre version .
    Puis-je ajouter une version récente PHP via Wamp 2.2 et ainsi
    visualiser les mises en pages de l'application .
    Merci pour ta compréhension .

  4. #204
    Expert éminent
    Salut,

    Je ne suis pas un expert de Wamp, mais à priori tu ne peux pas ajouter des versions récentes de php sur une ancienne version de Wamp. Il faudrait te renseigner dans des forums Wamp pour voir à quel niveau ton installation bloque. Au pire, tu peux désinstaller Wamp (en sauvegardant ton répertoire qui contient les tables de base de donnée) et installer EasyPHP pour voir s'il fonctionne mieux.
    En tous cas, il faudra trouver une solution car la version php 5.3 (ou inférieure) que tu utilise est vraiment obsolète depuis longtemps et de nombreux exemples de code actuel ne pourront pas fonctionner, sans compter que tu ne pourras pas t'assurer en local du bon fonctionnement de ton site sur le serveur distant s'il utilise une version php plus récente.

  5. #205
    Invité
    Invité(e)
    Merci pour ton retour ABCIWEB
    Donc j'ai aussi essayé l'installation de la version DEVserver de cette application mais
    non fonctionnelle en local.
    Dois-je télécharger la version WEBserver afin d'avoir un pseudo serveur en local.
    J'ai aussi un upgrade pour Wamp 2.2 mais si je l'installe et que l'activation ne
    passe pas au vert;je serais à nouveau bloqué dans l'utilisation dudit serveur.

  6. #206
    Expert éminent
    Salut,

    Tu as du rater quelque chose dans la mise à jour de wampServer et il y a un conflit quelque part. Il faut toujours désinstaller l'ancienne version avant d'en installer une nouvelle. Le plus efficace serait de faire un grand ménage en désinstallant easyPhp et/ou wampServer en prenant soin de copier ailleurs le contenu du répertoire de bdd. Ensuite il faudrait aller dans le répertoire des programmes et supprimer manuellement les répertoires restants concernant ces programmes, et pour bien faire - uniquement si besoin et après avoir fait une sauvegarde du système par sécurité - supprimer les clés de registres correspondant à ces programmes.

    Perso j'ai windows 8 sur un vieux pc qui a maintenant dix ans (j'attends Zen 2 pour changer), donc cela ne peut pas venir de ton matériel. Il faut faire du ménage et ça devrait aller. Après comme déjà dit, la gestion serveur n'est pas ma spécialité donc tu aurais peut-être des réponses plus avisées dans un forum spécifique comme celui-ci pour Wamp. Je ne peux pas t'en dire plus.

  7. #207
    Invité
    Invité(e)
    Merci pour ta réponse ABCIWEB toutefois j'ai correctement remis à niveau ce système informatique sous Windows 8.1 et
    paramétrer le tout correctement ainsi qu'une vérification de la base de registre .
    Pourrais- tu vérifier si tu utilises EasyPhp version Webserver ou l'autre version Devserver .
    Es-tu en local car je veux utiliser ce système seulement en local .
    En ce qui concerne Wamp donc Wamp 2.2 fonctionne correctement en local;je vais essayer une mise à niveau par le biais
    d'une mise à jour spécifique mais j'aimerais que tu vérifie ta version D'EasyPhp .
    Merci pour tes suggestions .
    En te souhaitant une excellente fin de semaine .

  8. #208
    Expert éminent
    Je n'utilise plus easyPhp (je l'utilisais il y a de nombreuses années), je t'ai donné cette solution comme alternative puisque tu avais des problèmes mais personnellement j'utilise wampServer.

    Fais bien attention de désinstaller TOUS tes serveurs locaux (wampServer ET easyPhp) avant de réinstaller une nouvelle version de wampServer OU de easyPhp. C'est certainement ça qui a posé problème lors de ta première mise à jour. Et tu ne dois installer qu'UN serveur local sur ta machine sinon tu auras probablement des conflits/bugs. Concernant easyPhp la version Devserver est suffisante pour du développement en local.

  9. #209
    Invité
    Invité(e)
    Merci pour ton retour courriel donc je vais vérifier mes
    configurations serveur et je reviendrais vers ce forum
    si j'ai besoin de ton aide; si bien entendu cela ne te dérange pas .
    En te souhaitant une excellente fin de semaine .

  10. #210
    Membre du Club
    Le formulaire d'inscription.
    Bonjour,

    Je n'ai pas compris quel est l'utilité du formulaire d' inscription avec vérification des champs et avatar.
    Pouvez vous m'expliquer sa raison d'être?

    Merci
    L' ignorance, toujours mène à la servitude.

  11. #211
    Expert éminent
    Salut,

    Ce formulaire est un exemple parmi tant d'autres et celui-ci montre comment lier deux formulaires entre eux, le formulaire d'upload de la photo étant dissocié du formulaire d'inscription même s'ils sont envoyés par le même bouton. Les données texte sont envoyées en premier puis ensuite l'éventuelle photo. Cela peut rendre des services pour la gestion des erreurs mais aussi et surtout pour la fiabilité des inscriptions.

    Par exemple, un visiteur qui tente de télécharger un fichier de 20 mega sur une ligne à faible débit devra attendre un certain temps, peut-être plusieurs minutes avant la fin de l'envoi du fichier. Si les données texte étaient envoyées en même temps que la photo, il faudrait attendre au minimum que le premier fragment du fichier (réglé par défaut à 8Mo) soit chargé avant l'inscription des données. En envoyant les données texte en premier, l'inscription se fait quasi instantanément (moins d'une seconde), ce qui fait que les problèmes de connexion au réseau (déconnexion intempestive, fausse manoeuvre, panne de batterie, urgence à faire autre chose...) sont réduites au minimum puisqu'il faut un minimum de temps et de ressources pour faire l'inscription.

    En plus des problèmes de connexion réseau, l'image pourrait aussi être trop grosse pour pouvoir être redimensionnée, ce qui se produit par exemple avec une image dépassant les 10-12 Mo sur un serveur wamp dont le paramètre memory_limit actuel par défaut est de 128Mo. Sur les serveurs type OVH cette valeur est souvent doublée mais dans tous les cas elle est fixe si l'on utilise un serveur mutualisé. La classe saura gérer cette erreur en renvoyant un message approprié et en proposant de télécharger un autre fichier, mais ça fait une manip supplémentaire et peut-être le visiteur n'aura pas une autre photo sous la main, etc.

    Bref, c'est dans le but de fiabiliser un maximum le traitement du formulaire et pour éviter que les éventuels problèmes de traitement de l'image soient un frein quelconque pour l'inscription dans les cas limites/difficiles. En cas de problème, soit le visiteur pourra retélécharger un autre fichier depuis le formulaire et au pire s'il est pressé ou que sa connexion est pourrie, il pourra compléter son avatar plus tard depuis son espace personnalisé.

    Cette association de différents formulaires peut être aussi pratique pour des raisons techniques internes ou de mise en page. Cela fait aussi un exemple prêt à l'emploi, et montre comment utiliser les paramètres internes disponibles dans les classes javascript et php.

    C'est un exemple avancé d'utilisation, mais bien entendu on pourrait faire beaucoup, beaucoup plus simple en deux trois lignes de configuration javascript uniquement si l'on souhait n'utiliser qu'un seul formulaire (c.f fichier "basique"). La gestion des cas limites prend toujours plus de temps, surtout qu'ici c'est complété par un recadrage (crop) possible de l'image par le visiteur, la centralisation des messages d'erreurs pour faciliter les traductions/personnalisations, et des requêtes ajax de contrôle pour prévenir en temps réel (avant la soumission du formulaire) si le login ou le mail sont déjà utilisés par d'autres utilisateurs.

  12. #212
    Membre du Club
    Bonjour.
    Merci pour votre réponse très détaillée.
    Celle ci m'entraine d'autres questions néanmoins.
    Cependant j'ai bien compris la raison d'envoyer d'abord le texte d' inscription en base de données avant l'avatar pour que le visiteur soit inscrit de façon fiable.Et non pas dépendant de l'envoi de l'image avatar.
    Ainsi si j'ai bien compris, la personne inscrite peut ensuite accéder à une page extérieure en compagnie de son avatar pour envoyer des fichiers vers mon serveur.Elle pourra alors se trouver en correspondance avec ce qu'elle aura envoyé.Et non pas être anonyme si elle n'avait pas été inscrite.
    Par contre, il me reste à comprendre comment est il possible par le visiteur de procéder à un recadrage (crop) de l'image qu'il envoi?
    Recadrage voulant bien indiquer redimensionnement de l'image?
    Enfin, en quoi consiste la traductions/personnalisations ? Je crois pouvoir comprendre que personnalisation laisserait apparaitre une sorte de menu contextuel selon les types de fichiers à envoyer.Personnalisation produirait une réaction événementiel?
    Mais traduction me paraît trop flou pour tenter de vous en donner une idée juste.

    Merci de bien vouloir tenter de répondre à mes interrogations?
    D'autres lecteurs se les posent peut être aussi?

    L' ignorance, toujours mène à la servitude.

  13. #213
    Expert éminent
    Citation Envoyé par Max747 Voir le message
    Il me reste à comprendre comment est il possible par le visiteur de procéder à un recadrage (crop) de l'image qu'il envoi?
    Recadrage voulant bien indiquer redimensionnement de l'image?
    Il suffit d'essayer en faisant un cliquer-glisser sur l'image. La sélection est libre si l'on clique sur le bouton radio "libre", et contrainte pour respecter un format standard si l'on choisi 4/3, 3/2, ou 16/9.

    Citation Envoyé par Max747 Voir le message
    Enfin, en quoi consiste la traductions/personnalisations des mesages ?
    C'est juste pour dire qu'il est ainsi plus facile de les changer et si besoin les traduire dans une autre langue pour un site multilingue par exemple.

    Sur le principe, le module d'upload utilise un formulaire html, un protoype javascript, une classe principale php d'upload et éventuellement d'autres classes php suivant les besoins. Cela fait de nombreuses pages de script dans lesquelles il peut y avoir des messages définis suivant les interactions utilisateur et le traitement des fichiers uploadés. Donc si tu as besoin de changer ces messages en fonction de la langue du visiteur par exemple, il est plus pratique d'avoir une seule page qui regroupe tous ces messages, plutôt que d'avoir à chercher et modifier ces messages dans les différents fichiers. Cela ne fait qu'une page à modifier dynamiquement suivant la langue du visiteur, plutôt que tous les fichiers qui participent au traitement du formulaire

    Pour le reste, les styles et fonctions événementielles se déclenchent suivant des événements qui peuvent être : le visiteur sélectionne un fichier, le visiteur envoie le formulaire, le fichier est transféré, l'upload est terminé, etc. Ce module d'upload surveille donc ces événements et propose des styles et des fonctions événementielles qui peuvent modifier des styles css, ou déclencher des fonctions javascript en fonction de ces événements. On les utilisera ou pas suivant les besoins du formulaire. L'intérêt des styles événementiels est qu'ils permettent une personnalisation/programmation facile du formulaire sans avoir besoin de programmer des fonctions javascript.

  14. #214
    Membre du Club
    Bonjour,

    Merci pour tous ces renseignements.
    Je comprends mieux désormais la raison de toutes les options que vous nous avez réalisé.
    Il n'y a plus qu' à mettre tout cela en pratique.Avec un choix bien consistant.
    Et pour le plus grand plaisir des "clients".

    Bien cordialement.
    L' ignorance, toujours mène à la servitude.

  15. #215
    Expert éminent
    Module d'upload Ajax/jQuery - Php, prêt à l'emploi.
    Upload Ajax-Php, version 7.4


    Rappel 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 Javascript

    Ajout

    Ajout 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.

    Correction

    Correction 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éliorations

    1/ 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 PHP

    Ajout

    Ajout 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.

    Correction

    Correction 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éliorations

    La 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 fournis

    Améliorations

    1/ 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'emploi

    Le 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.

  16. #216
    Expert éminent
    Salut,

    Petite précision concernant l'option de configuration javascript config.RevokeObjectURL dans mon précédent message.

    Cette option n'améliore pas le nettoyage des ressources par rapport aux précédentes versions car la méthode RevokeObjectURL était déjà utilisée. Simplement sont utilisation n'était pas configurable ce qui pouvait être gênant dans des cas très particuliers, par exemple si l'on a besoin de cloner les informations du fichier avec sa vignette de prévisualisation auquel cas il convient de configurer cette option à false pour ne pas perdre la référence au fichier. Cette option permet donc juste de désactiver l'utilisation de RevokeObjectUR en cas de besoin exceptionnel, elle n'apporte rien par rapport aux précédentes versions avec la configuration par défaut.

  17. #217

  18. #218
    Expert éminent
    Citation Envoyé par vermine Voir le message
    C'est corrigé dans la news.
    Oui merci. Après avoir lu la news, je me suis rendu compte que ma formulation prêtait à confusion puisque je parlais "d'ajout". J'ai voulu préciser pour ceux qui ont créé des formulaires avec les précédentes versions qu'il n'était pas utile de mettre à jour uniquement pour cela

  19. #219
    Expert éminent
    Upload Ajax-Php, version 7.5
    Disponible ici


    Notez que la classe Php vérifie maintenant par défaut que le type MIME du fichier correspond à son extension. Suivant la base magique utilisée, il est possible que vous ayez des problèmes pour la reconnaissance des fichier de type MTS, m2ts et probablement d'autres fichiers de type streaming. Vous pouvez exclure certains type de fichiers du contrôle, ou encore choisir une autre base magique. Voir l'option de configuration $verif_type_MIME et le fichier d'exemple UploadAjaxABCI_Upload_Basique_Controle.php.



    Classes php

    UploadAjaxABCIServeur

    Améliorations

    1/ Amélioration spectaculaire de la gestion de la mémoire.
    L'upload des fichiers utilise maintenant moins de 1Mo de mémoire (environ 650ko sur un serveur distant type ovh) quelle que soit la taille des fragments avec l'utilisation de la fonction stream_copy_to_stream. C'est une amélioration considérable par rapport à l'ancienne méthode fread/fwrite qui utilisait une quantité de mémoire proportionnelle à la taille des fragments, soit un peu plus de 8Mo pour des fragments de 8Mo... un peu plus de 32Mo pour des fragments de 32Mo, etc.

    2/ Ajouts de paramètres de configuration dans l'initialisation de la classe.
    - $extensions
    - $max_size
    - $verif_type_MIME nouvelle fonctionnalité

    Ils permettent de configurer les extensions acceptées, la taille maximale des fichiers, et de vérifier que le type MIME du fichier correspond à son extension. C'est un confort appréciable, notamment pour les débutants, car il n'est plus besoin de savoir où et comment faire ces contrôles dans le script.

    3/ Configuration possible de la classe avec un tableau de paramètres.

    Plus d'informations ici

    4/ Nettoyage plus strict des fichiers temporaires en cas d'erreur.

    5/ Implémentation d'une interface
    Pour les fonctions indispensables utilisées dans les traits UploadABCITraitServices et ParamsDefautServeur

    Ajout de méthodes

    - public deleteFileTempCookie

    - private inCleanTabExt (utilisée pour l'option de configuration $extensions)
    - private verifMaxSize (utilisée pour l'option de configuration $max_size)
    - private verifMimeType (utilisée pour l'option de configuration $verif_type_MIME)


    UploadABCITraitServices

    Nouveau trait de services. Reprend les méthodes de la classe UploadABCIServices et ajoute des fonctionnalités. Ce trait est utilisé par la classe serveur de même que par la classe UploadABCIServices. En conséquence, l'héritage fonctionnel de la classe serveur qui héritait de la classe UploadABCIServices a été supprimé. La classe serveur pourrait donc être étendue en cas de besoin.

    Ajout de méthodes

    - public formateOctets
    - public getExtension
    - public cleanTabExtensions
    - public getMimeType

    Plus d'informations ici

    Amélioration

    - public getUniqid utilise maintenant la fonction random_bytes si disponible (Php 7+).


    SymfonyMapType

    Nouvelle classe qui reprend le tableau des correspondances MIME type/extensions du dépôt GitHub de Symfony. Utilisée par la méthode serveur verifMimeType et la méthode getMimeType du trait de services.



    Classe Javascript

    Amélioration

    - Remise à zéro de l'affichage des progressions graphiques et textuelles de l'upload lorsque le fichier est en erreur.

    - Renforcement du contrôle conditionnel de l'affichage. Evite d'éventuels bugs si l'on utilise pas le bloc d'information sur les fichiers.


    Ajout

    - config.fileSizeMaxInput
    Nouvelle option de configuration pour contrôler la taille maximale des fichiers pour chaque champ, si plusieurs champs de type file sont inclus dans le formulaire.

    Plus d'informations ici



    Nouveau fichier d'exemple

    UploadAjaxABCI_Upload_Basique_Controle.php

    Cet exemple qui comprend deux formulaires a été créé pour sensibiliser les débutants aux problèmes de sécurité et montrer les fonctions disponibles.
    - Contrôle simple en configurant la classe d'upolad serveur.
    - Contrôle plus élaboré avec plusieurs champs de type file et renforcement du contrôle pour les fichiers image avec optimisation des photos pour le web.



    Compatibilité

    1/ La classe Javascript est 100% compatible avec toutes les versions 7

    2/ Les classes Php sont à 99.99% compatibles avec toutes les versions 7

    Le 0.01% vient du fait que les méthodes de la classe Messages ont été remplacées par des propriétés. J'avais initialement créé des méthodes pour éventuellement faire des traductions-personnalisations dynamiques depuis ce fichier en interrogeant une bdd par exemple, mais c'était laborieux d'avoir plusieurs fichiers à configurer côté serveur.
    La méthode surchargeMessages de la classe setMessages ajoutée dans la version précédente (7.4) de ce module d'upload est plus pratique pour cet usage, d'autant plus que l'on ne risque pas d'oublier des messages utiles de la classe Messages qu'il est préférable de considérer comme contenant les messages par défaut.
    La classe SetMessages qui hérite de cette classe a été modifiée en conséquence, de sorte que le code est 100% compatible dans le contexte d'un upload.

    Seule l'utilisation de la classe Messages en dehors de ce contexte pose problème. C'était le cas des fichiers d'exemple UploadAjaxABCI_Inscription_Photo_Crop.php et UploadAjaxABCI_Inscription_Photo_CompNavObs.php qui utilisaient cette classe côté visiteur pour alimenter le script javascript en messages. Il suffit de remplacer la ligne Php: $Upabci_messages_inscription = Messages::inscriptionClient(); par $Upabci_messages_inscription = Messages::$inscriptionClient; dans le script du formulaire.

    Tous les autres fichiers d'exemples sont 100% compatibles sans modification.

    Donc à cette exception près, vous pouvez faire une mise à jour en remplaçant l'ancienne classe javascript par la nouvelle et l'ancien dossier Php_Upload/Classes par le nouveau. Faites cependant une sauvegarde préalable de ce dossier au cas où vous auriez modifié des tableaux dans la classe Messages, ou les paramètres de configuration par défaut dans le trait ParamsDefautServeur.



    Mode d'emploi

    Mis à jour + quelques corrections.


    Voilà

  20. #220
    Expert éminent
    Upload Ajax-Php, version 7.5c
    Disponible ici

    Php
    Mise à jour de la classe php serveur UploadAjaxABCIServeur.php

    La version 7.5 renvoyait un message d'erreur dans le retour ajax si l'on utilisait un tableau avec l'index "except" pour configurer le paramètre $verif_type_MIME de cette classe. Cela ne provoquait apparemment pas de bug mais ce retour inapproprié aurait pu gêner une éventuelle exploitation des messages d'erreur avec les méthodes événementielles. Corrigé.

    Javascript
    Inchangé

    Fichiers d'exemples
    Les fichiers d'exemples utilisent désormais la version 3.4.1 de jQuery. La version 1.12.4 est conservée uniquement pour les exemples concernant les navigateurs obsolètes < iE10.

    Amélioration du formatage des symboles graphiques de status dans les fichiers :
    -UploadAjaxABCI_Custom.php
    -UploadAjaxABCI_Custom_VerifFileExist.php
    L'affichage dans Edge a maintenant le même rendu qu'avec Chrome et Firefox.

    Mode d'emploi
    Quelques précisions supplémentaires.

    Voilà

###raw>template_hook.ano_emploi###