Получить размер файла перед загрузкой без использования заголовка Content-Length - PullRequest
0 голосов
/ 04 марта 2020

Я хочу получить размер файла перед его загрузкой. В своем коде я извлекаю заголовок Content-Length из запроса. Мой код работает нормально для многих случаев, но в некоторых случаях нет заголовка Content-Length, мой вопрос, как я могу получить размер файла в случаях, когда у меня нет заголовка Content-Length, вот мой код:

HttpWebRequest myHttpWebRequest = (HttpWebRequest)WebRequest.Create("https://www.learningcontainer.com/wp-content/uploads/2019/09/sample-docx-file-for-testing.docx");
using (HttpWebResponse myHttpWebResponse = (HttpWebResponse)myHttpWebRequest.GetResponse())
{
var headers = myHttpWebResponse.Headers;
    if (headers.AllKeys.Contains("Content-Length"))
        var fileSize = headers.GetValues("Content-Length")[0];
    else
    {
     //code here should be added
    }
}

Например, в данном URL нет заголовка Content-Length

1 Ответ

0 голосов
/ 09 марта 2020

Вы не будете знать размер контента заранее без заголовка Content-Length.

Если вы не можете управлять сервером, вам придется с ним справиться. Одним из вариантов будет потоковая передача данных во временный файл на диске, и, как только вы это сделаете, вы можете определить размер и передать его на следующий шаг, чем бы вы ни занимались.

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

...