2

我的 ASP.NET 网站当前将文件从远程服务器下载到本地驱动器,但当用户访问该站点时,他们必须等待服务器完成文件下载,然后才能从我的 ASP.NET 网站下载文件。

是否可以通过我的 ASP.NET 网站直接将远程网站的下载流式传输给用户(有点像代理)?

我目前的代码如下:

using (var client = new WebClientEx())
                {
    client.DownloadFile(downloadURL, "outputfile.zip");
}

网络客户端类:

   public class WebClientEx : WebClient
    {
        public CookieContainer CookieContainer { get; private set; }

        public WebClientEx()
        {
            CookieContainer = new CookieContainer();
        }

        protected override WebRequest GetWebRequest(Uri address)
        {
            var request = base.GetWebRequest(address);
            if (request is HttpWebRequest)
            {
                (request as HttpWebRequest).CookieContainer = CookieContainer;
            }

            return request;
        }
    }
4

1 回答 1

0

如果我理解正确,您正在为正在下载的远程文件实现某种缓存,但同时流式传输给用户。在这种情况下,您可能不想使用WebClient并等待整个文件完成。

查看类似帖子的答案,使用HttpWebRequesthttps ://stackoverflow.com/a/5605490/1373170

在这种情况下,您可以将文件分成块进行流式传输,并将这些相同的块发送到本地存储和Response. 如果您真的不需要服务器上本地的文件,您可以完全避免该存储,而只将其直接流式传输给用户。

于 2012-06-09T17:07:49.883 回答