下载 ASP.NET(通过服务器)的文件,同时将其流式传输给用户

本文关键字:给用户 传输 文件 NET ASP 服务器 下载 | 更新日期: 2023-09-27 18:36:36

我的 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;
        }
    }

下载 ASP.NET(通过服务器)的文件,同时将其流式传输给用户

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

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

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