下载 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;
}
}
如果我理解正确,您正在为正在下载的远程文件实现某种缓存,但同时流式传输给用户。在这种情况下,您可能不想使用 WebClient
并等待整个文件完成。
查看类似帖子的答案,使用 HttpWebRequest
:https://stackoverflow.com/a/5605490/1373170
在这种情况下,您可以分块流式传输文件,并将这些相同的块发送到本地存储和Response
。如果您实际上不需要服务器上的本地文件,则可以完全避免该存储,而仅将其直接流式传输给用户。