You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ASP.NET MVC如何从FTP流式下载文件并直接返回FileResult避免全量加载

解决方案

你可以直接使用ASP.NET MVC内置的File方法返回FTP响应流,框架原生支持流式传输逻辑,不需要将文件全量加载到服务器内存,就能实现FTP下载和向用户传输同步进行。

补全后的完整代码

public FileResult getBigFileFromFTP()
{
    FtpWebRequest request = (FtpWebRequest)WebRequest.Create("ftp://ftp-location.com/test/bigfile.zip");

    request.Method = WebRequestMethods.Ftp.DownloadFile;
     
    request.Credentials = new NetworkCredential("ftpuser", "ftppwd");

    FtpWebResponse response = (FtpWebResponse)request.GetResponse();

    Stream responseStream = response.GetResponseStream();
    
    // 补全代码开始
    // 声明文件对应的MIME类型,此处为zip文件的类型,其他文件类型按需修改
    const string contentType = "application/zip";
    // 客户端下载时展示的默认文件名
    const string downloadFileName = "bigfile.zip";
    
    // 直接返回流,MVC会在传输完成后自动释放相关资源
    return File(responseStream, contentType, downloadFileName);
}

注意事项

  • 默认File方法已经做了流的分段读取传输优化,不会占用和文件大小对等的服务器内存,完全满足大文件下载需求
  • 请根据你实际下载的文件类型调整contentType参数:通用二进制文件可以填application/octet-stream,PDF文件填application/pdf,以此类推
  • 如果你使用的是.NET Core/.NET 5+环境,官方已不推荐使用FtpWebRequest,可以替换为第三方FTP库实现相同逻辑,返回流的方式保持一致

内容的提问来源于stack exchange,提问作者treep

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 02:54:04