2017-09-01 5 views
0

Maintenant, je vais envoyer le fichier à mon serveur via le composant Nethttpclient dans Delphi 10, mais je ne sais pas comment suivre la progression lors du téléchargement. Si je télécharge le fichier, je peux obtenir la progression à travers l'événement ReceiveData. Il n'y a pas d'autres fonctions ou des événements utiles pour le faire, s'il vous plaît bien vouloir me aider à résoudre ce problème. (Seulement nethttpclient, parce que je ne l'utilise Indy)Comment suivre la progression du téléchargement par NetHttpClient dans Delphi 10?

+2

Quoi? Un autre composant HTTP? Encore une bonne raison pour la programmation d'interface. Si vous avez créé et consommé seulement l'objet d'interface implémenté, vous n'auriez aucun problème à basculer vers Indy ou une autre bibliothèque ou composant qui peut signaler la progression .. – Victoria

+0

oui, mais tout mon code est basé sur nethttpclient – HenryXu

+0

Juste un point de détail, là est pas une telle version XE10 –

Répondre

4

TNetHTTPClient ne simplement pas exposer tout type d'informations d'état pendant téléversements, autres que OnRequestComplete et OnRequestError. Si vous avez besoin d'un statut sur la progression des données téléchargées, vous devez passer à une autre bibliothèque HTTP qui fournit le type de rapport d'avancement souhaité. Cela étant dit, la seule façon que je peux voir pour obtenir le statut de téléchargement avec TNetHTTPClient est de publier les données du fichier en utilisant un TStream. Dérivez une classe personnalisée de TFileStream et remplacez sa méthode Read() pour lire les données de fichier et l'état du rapport si nécessaire.

+0

Comment le faire, s'il vous plaît veuillez me donner quelques informations d'indice, et j'essaie de le modifier. – HenryXu

+1

@HenryXu: ce que vous demandez est trop large pour StackOverflow. Il existe de nombreuses bibliothèques HTTP disponibles, et beaucoup d'entre elles ont des rapports d'avancement. Choisissez-en un qui répond à vos besoins et modifiez votre code pour l'utiliser. Pourquoi ne voulez-vous pas utiliser Indy? Il est pré-installé dans RAD Studio et son composant HTTP comporte des événements de progression pour l'envoi et la réception. –

+0

oui, ils ont des événements de progrès comme indy, ics, cis et ainsi de suite. une raison, je n'aime pas utiliser beaucoup de composants tiers, et une autre raison, tous les codes de mon composant appartenant et mon application est basée sur nethttpclient. Je ne souhaite pas que je change le composant pour obtenir une fonction. – HenryXu