在开始下载 pdf 文件使用 DownloadFile C# 之前延迟

标签: Asp.net C#
发布时间: 2017/2/25 3:44:44
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.

我试图下载大 25 兆字节的 pdf 文件,使用以下代码︰

string url = "http://aaa.aaa/test.pdf";
string clientfile = HttpContext.Current.Server.MapPath("~/123.pdf");
WebClient wc = new WebClient();
wc.DownloadFile(new Uri(url, UriKind.Absolute), clientfile);

但是文件签名已损坏,不会正确下载。 有办法能延迟文件下载,实际上开始下载之前吗?

我知道该文件是正确的因为如果我下载它从浏览器中,该文件没有损坏。

谢谢你

解决方法 1:

我发现这个问题。 当下载一个 pdf 文件,它实际上被压缩格式称为"gzip 已"。 使用浏览器,该文件时,客户端会自动解压缩。 在.NET 中使用 WebClient DownloadFile 方法时, 必须手动完成。 首先创建一个类来派生 WebClient 类,如下所示︰

public class GzipWebClient : WebClient
    {
        protected override WebRequest GetWebRequest(Uri address)
        {
            HttpWebRequest request = base.GetWebRequest(address) as HttpWebRequest;
            request.AutomaticDecompression = DecompressionMethods.Deflate | DecompressionMethods.GZip;
            return request;
        }
    }

然后,更改代码以使用上面的类︰

string url = "http://aaa.aaa/test.pdf";
string clientfile = HttpContext.Current.Server.MapPath("~/123.pdf");
GzipWebClient wc = new GzipWebClient();
wc.DownloadFile(new Uri(url, UriKind.Absolute), clientfile);

Pdf 文件现在将正确下载和自动解压。

官方微信
官方QQ群
31647020