IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
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

jQuery Discussion :

Comment synchroniser une barre de progression afin de recevoir JsonResult en utilisant $.upload ?


Sujet :

jQuery

  1. #1
    Expert confirmé Avatar de Toufik83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2012
    Messages
    2 506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2012
    Messages : 2 506
    Par défaut Comment synchroniser une barre de progression afin de recevoir JsonResult en utilisant $.upload ?
    bonjour,
    j'utilise $.upload() https://github.com/bassjobsen/jquery...queryupload.js
    pour télécharger des images clients vers le serveur.

    le plugin fonctionne parfaitement bien, sauf que moi je voudrais créer une barre de progression synchronisée avec le chargement des données, je n'ai pas cessé de faire des recherches sur le net, mais la plupart des développeurs utilisent $.ajax(), $.ajaxForm() et uploadProgress(). je me demande si on peux juste changer un peu ce plugin si c'est faisable.

  2. #2
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    17 202
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 202
    Par défaut
    Bonjour,
    il existe une solution clé en main sur ce site due à ABCIWEB
    Upload de fichiers Ajax....

  3. #3
    Expert confirmé Avatar de Toufik83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2012
    Messages
    2 506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2012
    Messages : 2 506
    Par défaut
    https://jsfiddle.net/Toufi9/ho3wmvkg/
    hélas que ça ne fonctionne pas sous IE9, vu qu'il ne supporte pas les objets FormData et File.

  4. #4
    Expert confirmé

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 418
    Par défaut
    Salut,

    Il me semble que le module jquery "blueimp" supporte les navigateurs obsolètes.

    Après je n'ai pas testé et je ne sais pas si toutes les fonctionnalités sont disponibles y compris pour les navigateurs obsolètes. Parfois les vieux navigateurs sont simplement supportés mais avec les fonctionnalités minimum indispensables.

    Dans la même optique j'ai prévu un bypass pour les navigateurs obsolètes dans la classe d'upload donnée en lien par NoSmoking. De sorte que tu peux configurer cette classe pour qu'elle envoie le post à l'adresse indiquée dans la balise "action" du formulaire quand elle détecte un navigateur obsolète plutôt que de renvoyer un message d'alerte. Ainsi l'upload reste possible pour ces vieux navigateurs mais sans toutes les fonctionnalités d'informations en temps réel, ce qui n'est pas grave puisque cela ne concernera qu'un très petit pourcentage d'utilisateurs.

    Je voulais faire un exemple de cette configuration mixte mais bon, IE9 est obsolète depuis déjà longtemps et puis surtout depuis 2016 microsoft ne fait plus de mises à jour de sécurité pour les anciens navigateurs et fait tout pour qu'on ne les utilise plus... les derniers jours d'IE9 sont donc comptés. Enfin bon si malgré tout tu souhaites une compatibilité d'upload pour les quelques irréductibles accrochés à leur IE9 à leurs risques et périls, je pourrai t'aiguiller.

  5. #5
    Expert confirmé Avatar de Toufik83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2012
    Messages
    2 506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2012
    Messages : 2 506
    Par défaut
    bonjour,
    merci ABCIWEB pour les explications, je vous signal que $.upload() fonctionne très bien sur tout les navigateurs.
    ce que j'ai fait comme solution c'est d'utiliser $.ajax() +xhr.upload sous les navigateurs (chrome,firefox,opera et safari), et d'utiliser $.upload quand le navigateur utilisé est IE9.
    je sais que ce n'est pas la meilleure solution, mais ça me débloque pour l'instant et je voudrais bien comprendre votre Classe d'upload que vous avez créez, et la mettre en place dans mon projet ASP.NET MVC 4.

  6. #6
    Expert confirmé

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 418
    Par défaut
    Citation Envoyé par Toufik83 Voir le message
    bonjour,
    merci ABCIWEB pour les explications, je vous signal que $.upload() fonctionne très bien sur tout les navigateurs.
    Je ne sais pas de quel $.upload() tu parles... Enfin sur le principe ce n'est pas particulièrement l'upload qui est impacté pour les versions inférieures à IE10, mais plus généralement toutes les fonctions javascript disponibles pour l'upload.

    C'est pour cela que je n'ai pas fait de version spécifique pour les vieux navigateurs mais simplement prévu un bypass pour permettre néanmoins l'upload direct avec la technologie serveur dans le cas de navigateurs obsolètes. C'est un module d'upload assez récent, j'étais donc pas franchement motivé pour alourdir le code uniquement pour des navigateurs condamnés à une disparition rapide.

    Surtout qu'avant, les utilisateurs pouvaient garder leur vieux navigateurs en comptant sur le fait qu'ils étaient quand même mis à jour. Mais depuis la décision de début 2016 de microsoft dont j'ai parlé plus haut, cela devient carrément irresponsable. Une très grosse part des piratages qu'on trouve sur le web exploitent les failles de sécurité des systèmes ou applications non mises à jours ce qui permet de court-circuiter complètement l'antivirus. Du coup c'est le fonctionnement global du pc qui risque d'être condamné rapidement si l'on persiste à utiliser ces vieux navigateurs.

    Pour le reste le module d'upload AJAX est directement prêt à l'emploi et utilisable en quelques minutes mais uniquement si on utilise php côté serveur. Si tu utilises une autre technologie côté serveur il faudra faire le code correspondant côté serveur. C'est possible puisque côté client (AJAX) rien n'est spécifique à la technologie serveur et c'est côté client que se situe le plus gros du travail. Par contre cela te feras du travail en plus qui peut être long si tu veux refaire l'équivalent de tout ce qui est déjà développé côté serveur en php. Faudrait peut-être mieux regarder les modules d'upload Ajax/ASP.NET si tu veux une solution toute faite utilisable directement avec ASP.NET.

  7. #7
    Expert confirmé Avatar de Toufik83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2012
    Messages
    2 506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2012
    Messages : 2 506
    Par défaut
    Je ne sais pas de quel $.upload() tu parles...
    De celui là https://github.com/bassjobsen/jquery...queryupload.js, ce plugin assure le upload vers le serveur sans aucun problème, mais sans barre de progression.
    puis votre travail est géant !!! il faut d'abord comprendre le code puis l'adapter selon mon besoin.

  8. #8
    Expert confirmé

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 418
    Par défaut
    Citation Envoyé par Toufik83 Voir le message
    ce plugin assure le upload vers le serveur sans aucun problème, mais sans barre de progression.
    Cela confirme ce que je disais plus haut, on peut faire de l'upload en javascript pour les anciens navigateurs mais à minima et de nombreuses fonctionnalités ne seront pas disponibles. D'où mon idée (confortée par l'annonce de leur mort annoncée et provoquée par microsoft à court terme) de ne faire aujourd'hui qu'un bypass qui permet néanmoins de télécharger le fichier mais sans les fonctionnalités de javascript puisque de toutes façons les avantages sont très réduits pour les vieux navigateurs.

    Citation Envoyé par Toufik83 Voir le message
    puis votre travail est géant !!!
    J'ai voulu faire une solution clé en main et utilisable par des quasi débutants mais avec néanmoins un maximum de fonctionnalités disponibles. Donc ça fait du travail, pour détailler les fonctions du modules et aussi pour les exemples annexes comme les crops préinstallés, validation de formulaires etc. qui n'ont pas un rapport direct avec l'upload.
    C'est aussi un choix de donner un maximum d'exemples d'applications pour éviter d'avoir à répondre ensuite à de multiples questions à savoir comment peut-on faire ceci ou cela ? Bien sûr il y aura toujours des cas particuliers mais au final le pari est plutôt réussi puisqu'il y relativement peu de questions posées par les utilisateurs sur le forum.

    Citation Envoyé par Toufik83 Voir le message
    il faut d'abord comprendre le code puis l'adapter selon mon besoin
    Le principe d'utilisation de ce module est justement de ne pas avoir besoin de comprendre le code pour utiliser les méthodes proposées.
    Mais effectivement si tu n'utilises pas php il te faudra comprendre au minimum les instructions attendues par le code javascript pour pouvoir faire ton code serveur. C'est un chapitre auquel j'ai pensé mais que je n'ai pas encore eu le temps de faire. C'est pour cela que je disais que d'autres modules sont certainement plus accessibles/mieux préparés si on utilise pas php côté serveur.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Comment faire une barre de progression qui redémarre tous les x temps ?
    Par Dsphinx dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 21/09/2012, 09h58
  2. Réponses: 3
    Dernier message: 12/01/2010, 10h26
  3. comment coder une Barre de progression sous AS
    Par loukili81 dans le forum ActionScript 1 & ActionScript 2
    Réponses: 0
    Dernier message: 21/07/2008, 11h24
  4. Comment synchroniser la barre de progression
    Par lucienkany dans le forum IHM
    Réponses: 1
    Dernier message: 28/09/2007, 20h51

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo