Voulez-vous dire quand vous êtes le serveur ou le client?
Si vous êtes le serveur, vous pouvez trouver ce que vous pourriez trouver sur n'importe quel autre fichier (en supposant que le flux d'image provient d'un fichier).
new FileInfo(path).Length;
Si vous voulez dire que vous faites le code client (vous accédez à un autre serveur web)
Faites une demande HEAD. Bien que certains serveurs ne se comportent pas correctement, la réponse correcte à un HEAD est à peu près identique à celle d'un GET, sauf que l'entité n'est pas envoyée.
Par exemple, pour obtenir le PNG sprite qui est utilisé sur cette page, le navigateur fait un GET à http://sstatic.net/stackoverflow/img/sprites.png qui se traduit par la réponse:
HTTP/1.1 200 OK
Server: nginx
Date: Tue, 17 Aug 2010 01:06:21 GMT
Content-Type: image/png
Connection: keep-alive
Cache-Control: max-age=604800
Last-Modified: Tue, 13 Jul 2010 06:28:14 GMT
Accept-Ranges: bytes
X-Powered-By: ASP.NET
Content-Length: 18607
suivi par les octets du fichier image réelle.
Faire une tête au lieu d'obtenir des résultats dans un:
HTTP/1.1 200 OK
Server: nginx
Date: Tue, 17 Aug 2010 01:07:20 GMT
Content-Type: image/png
Connection: keep-alive
Cache-Control: max-age=604800
Content-Length: 18607
Last-Modified: Tue, 13 Jul 2010 06:28:14 GMT
Accept-Ranges: bytes
X-Powered-By: ASP.NET
à peu près la même mais sans le corps d'entité. À ce stade, nous pouvons voir que l'image a une taille de 18607 octets, sans pour autant la télécharger. Cette méthode ne fonctionnera pas si l'image est envoyée en bloc, car alors la longueur du contenu ne sera pas envoyée dans un en-tête.
Edit:
Il est intéressant de souligner, que, parfois, avec un contenu chunked vous aurez pas d'autre choix que de télécharger le tout, parce que le serveur ne sera pas dire (et savez peut-être même pas) la taille quand il commence envoi. Malheureusement, ceci est susceptible d'être utilisé avec des cours d'eau particulièrement importants. Heureusement, il est peu probable que cela soit utilisé avec des images.
J'agis en tant que client oui. Donc le FileInfo ne fonctionnera pas alors je vois. HEAD info est la voie à suivre, malgré les pièges mentionnés ici. – Alex
Vous ne voulez pas dire 18607 octets de taille? – jeffora
LOL. J'ai copié-collé afin que je ne puisse pas mal le taper, puis j'ai copié-collé le max-age par erreur. Fixe, merci. –