Je me demande comment vérifier la quantité d'un fichier téléchargé/téléchargé? J'utilise HttpWebRequest
Comment puis-je vérifier la progression d'un téléchargement HttpWebRequest?
Répondre
Vous pouvez le faire est que vous utilisez le mode asynchrone sur le HttpWebRequest
- il y a un échantillon de travail (basé sur l'exemple de code doc MSDN) here. Brève description:
Voici un petit Win Forms client qui vous permet de télécharger un seul fichier à partir d'un serveur, via HTTP ou FTP . Il affiche la progression du téléchargement et affiche le taux de transfert moyen, en kb/sec. Il montre également comment utiliser les classes HttpWebRequest et FtpWebRequest dans System.Net pour faire des téléchargements de fichiers.
Vous devez l'appeler de manière asynchrone pour mettre à jour la progression de votre téléchargement.
HttpWebRequest ont des méthodes telles que
public override IAsyncResult BeginGetResponse(AsyncCallback callback, object state);
public override IAsyncResult BeginGetRequestStream(AsyncCallback callback, object state);
accepter callbacks asynchrones.
downvote? pourquoi??? – RameshVel
Merci, mais pouvez-vous élaborer sur comment vous feriez cela. –
Le rappel est pour lorsque la demande est terminée. il n'y a pas de progrès via le rappel (autre que 100% - ce qui est probablement * pas * pourquoi le PO a posé la question). cela pourrait expliquer la downvote –
Tant que vous définissez soit HttpWebRequest.ContentLength ou HttpWebRequest.SendChunked avant d'appeler GetRequestStream, les données que vous envoyez seront envoyées au serveur avec chaque appel à flux. [Begin] écrire. Si vous écrivez le fichier en petits morceaux suggère, vous pouvez avoir une idée de la distance qui vous longe.
En fait, le client met les données en tampon même lorsque vous définissez SendChunked. J'ai essayé ceci avec un fichier de 18M et tout a envoyé dans quelques secondes, alors la transmission réelle a pris des minutes. – Charles
Alors ne faites-vous pas * également * la gestion du tampon lors de l'écriture/lecture dans les flux d'entrée/sortie de 'HttpWebRequest'? En mettant en mémoire tampon, vous avez une itération naturelle avec laquelle incrémenter le progrès. –
Je me trompe peut-être, mais tout ce buffering sera du côté du client, n'est-ce pas? pas de données que j'envoie réellement. ou avez-vous du code ou des liens pour que je puisse voir ce que vous voulez dire? btw mon code actuel ressemble quelque chose comme http://codepad.org/gK16e0NU –
duplication possible de [téléchargement de fichier Silverlight 4 RC avec l'avancement du téléchargement: comment?] (http://stackoverflow.com/questions/2529558/silverlight-4 -rc-fichier-upload-avec-upload-progress-how-to) –