загружаемый файл имеет слишком большой размер - PullRequest
0 голосов
/ 16 января 2019

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

using (var wc2 = new WebClient())
{
    ServicePointManager.Expect100Continue = true;
    ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
    ServicePointManager.ServerCertificateValidationCallback = delegate { return true; };

    wc2.Headers.Add("User-Agent", "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0)");
    // 
    //wc2.DownloadFileAsync(fileUri, AppDomain.CurrentDomain.BaseDirectory + "\\demo\\" + fileName);

    wc2.DownloadFile("https://ds.postnord.com/v2/ptm/file/download/5184.22306", AppDomain.CurrentDomain.BaseDirectory + "\\demo\\test.xls");
}

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

1 Ответ

0 голосов
/ 16 января 2019

Если файлы Excel, загруженные с помощью WebClient, повреждены:

Необходимо добавить заголовок User-Agent, принять заголовки и использовать кодировку подтверждения.

Кроме того, требуется авторизация;в противном случае загруженный файл будет доступен только для чтения.

Следующий код загрузит ваш файл Excel без повреждения и других проблем:

string Url = "https://ds.postnord.com/v2/ptm/file/download/5184.22306";
string accessToken = "" ;
WebClient c = new WebClient();

c.Headers.Add("Accept: text/html, application/xhtml+xml, application/pdf, */*");
c.Headers.Add("User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0)");
c.Headers.Add("Accept-Encoding: gzip, deflate, br");
c.Headers["Authorization"] = accessToken;

c.DownloadFile(Url, @"c:\\downloaded6.xlsx");
...