ContentLength vs Actual File.Length - PullRequest
       10

ContentLength vs Actual File.Length

1 голос
/ 17 апреля 2010

Есть ли у кого-нибудь опыт, когда запрашиваемая длина файла для загрузки (HTTP) содержимого в заголовке не равна фактической длине (размеру) файла при загрузке?

Ответы [ 3 ]

1 голос
/ 17 апреля 2010

Заголовок длины содержимого - это количество байтов в теле ответа HTTP.

Это рассчитывается после всех этапов кодирования, большинство методов кодирования изменят длину.

  • Сжатие сократит его
  • Base 64 увеличит его.

Заголовок длины содержимого полезен только с точки зрения количества необработанных данных для чтения из сокета. Не поможет выделение буфера для хранения декодированного контента.

(Я только что написал некоторый код для обработки данных, но мне нужно читать поток ответов, постепенно расширяя буфер, а не один большой, выделяя чтение.)

0 голосов
/ 12 июля 2018

Вместо этого вы можете использовать WebClient.DownloadTaskAsync(...). Там размер файла будет одинаковым.

0 голосов
/ 17 апреля 2010

То, как вы формулируете вопрос, вводит в заблуждение.

Если HTTP-ответ содержит заголовок длины содержимого, то равно длине сообщения. Период. Ну, кроме ответов HEAD.

Если сервер отправляет больше, он не работает.

...