【问题标题】:file being downloaded is too large in filesize正在下载的文件的文件大小太大
【发布时间】:2019-06-10 13:10:09
【问题描述】:

我使用下面的代码来下载一个 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 文件,它就可以工作。这里可能有什么问题?

【问题讨论】:

  • 您在这里猜测扩展名,您确定它是xls 文件吗?你的意思是它也太大了?
  • 下载链接是真实的——它是一个 XLSX 文件,大小为 695kb。这不是很大。
  • 你怎么知道文件“太大”?您告诉我们的所有问题都总结为“它工作正常,但不使用上面的代码”。 实际上出了什么问题?
  • AppDomain.CurrentDomain.BaseDirectory (在正确安装/配置的应用程序中)可能会解析为服务器和桌面领域的写保护目录。最有可能的是,您希望在Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) 下方的某个位置创建一个目录并将您的垃圾保存在那里。它保证是可写的。
  • 刚刚运行提供的代码并下载了文件 - base64 编码。通过base64decode.org验证

标签: c# download webclient


【解决方案1】:

如果使用 WebClient 下载的 Excel 文件损坏:

您应该添加 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");

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-01-20
    • 1970-01-01
    • 2011-03-12
    • 1970-01-01
    • 2015-11-15
    • 1970-01-01
    • 1970-01-01
    • 2012-06-06
    相关资源
    最近更新 更多