【问题标题】:Downloading a file in ASP.NET (through the server) while streaming it to the user在 ASP.NET 中(通过服务器)下载文件,同时将其流式传输给用户
【发布时间】:2012-06-09 16:34:49
【问题描述】:

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

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

我目前的代码如下:

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

WebClient 类:

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

【问题讨论】:

标签: c# asp.net .net windows


【解决方案1】:

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

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

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

【讨论】:

  • 为什么会下载这个? +1 让您恢复平衡
  • 不确定。我很想对此发表评论,以帮助我写出更好的答案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-09-23
  • 1970-01-01
  • 2010-10-18
  • 1970-01-01
  • 1970-01-01
  • 2017-04-02
  • 1970-01-01
相关资源
最近更新 更多