Question

Vérifiez s'il est possible de télécharger un fichier avec Delphi

Bonne journée ...Je débute dans Delphi et je crée un programme pour télécharger des fichiers depuis HTTP...

J'utilise:

IdHTTP.Get (URL FileDownload)

Mais mon programme génère une erreur lorsqu'il ne parvient pas à télécharger le fichier...

Ex: http://exemple.com/ -> Génère une erreur

Ex: http://exemplo.com/meudownload.ts -> Effectue le téléchargement

Je souhaite corriger cette erreur, comment vérifier s'il est possible de télécharger le fichier ou s'il est en train d'être baissé...

j'ai utilisé EIdHTTPProtocolExeption mais vérifie uniquement les erreurs HTML comme :404, 300...et ce n'est pas ce que je souhaite...

J'aimerais voir si vous pouvez télécharger le fichier, ou s'il est en cours de téléchargement...

Si cela se produit, je téléchargerai un autre fichier :

donw_1.ts, down_2.TS, down_3.TS...puis quand il reçoit l'Archivage qui ne se télécharge pas, j'ai la réponse pour annuler la boucle...

Était-ce utile?

La solution 3

Impossible de résoudre le problème en faisant un scan HEAD...et j'ai réussi à résoudre le problème avec l'erreur HTTP 404 ....là où il n'y avait aucun fichier à télécharger, cela génère cette erreur EIdHTTPProtocolExeption ...Le problème a été résolu ....

Autres conseils

Attraper le EIdHTTPProtocolException c'est ce que vous devriez faire.N'oubliez pas qu'Indy est spécialement conçu pour utiliser des exceptions pour le rapport d'erreurs. EIdHTTPProtocolException c'est comment TIdHTTP signale les erreurs spécifiques à HTTP du serveur (tout autre type d'exception signifie que le socket ou le RTL a eu un problème et que la requête HTTP peut être réessayée).Le simple fait que vous obteniez cette exception signifie que le serveur n'a pas pu livrer le fichier comme demandé. Vous ne devez donc généralement pas réessayer à moins que vous sachiez qu'il s'agit d'une erreur récupérable.Vérification de l'exception ErrorCode est facultatif, mais disponible si vous avez vraiment besoin de différencier des erreurs spécifiques.

Si vous souhaitez simplement voir si un fichier existe sur le serveur, utilisez TIdHTTP.Head.Cette fonction télécharge simplement les en-têtes qui auraient été renvoyés par l'appel Get équivalent, mais pas les données elles-mêmes.Vous pouvez ensuite vérifier les en-têtes pour voir si le fichier existe et décider quoi faire ensuite.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top