Вы имеете в виду, когда вы сервер или клиент?
Если вы сервер, вы можете найти его любым другим способом (если предположить, что поток изображений исходит из файла).
new FileInfo(path).Length;
Если вы имеете в виду, что вы делаете клиентский код (вы обращаетесь к другому веб-серверу)
Сделайте запрос HEAD. Хотя некоторые серверы ведут себя неправильно, правильный ответ на HEAD в значительной степени идентичен ответу для GET, за исключением того, что объект не отправляется.
Например, чтобы получить PNG спрайта, который используется на этой странице, браузер выполняет GET для http://sstatic.net/stackoverflow/img/sprites.png, что приводит к ответу:
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
с последующими октетами фактического файла изображения.
Делая ГОЛОВУ вместо получения результатов в:
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
в значительной степени то же самое , но без тела сущности . На данный момент мы видим, что размер изображения составляет 18607 байт, но его фактически не загружают. Однако этот метод не будет работать, если изображение будет отправлено по частям, так как тогда длина содержимого не будет отправлена в заголовке.
Edit:
Стоит отметить, что иногда с кусочным контентом у вас не будет другого выбора, кроме как загрузить все это, потому что сервер не скажет (и может даже не знать) размер, когда он начнет отправлять. К сожалению, это, вероятно, также будет использоваться с особенно большими потоками. К счастью, это вряд ли будет использоваться с изображениями.