ASP.NETCoreMVC控制器返回文件时遇到问题-文件未能下载。
创始人
2024-09-18 01:00:25
0

在ASP.NET Core MVC控制器中,要返回文件时,需要通过以下代码添加响应头,以便告诉浏览器以什么格式显示文件。

例如,如果要返回一个PDF文件,可以使用以下代码:

[HttpGet]
public async Task DownloadFile()
{
    var file = Path.Combine(Directory.GetCurrentDirectory(), "Files", "example.pdf");

    if (!System.IO.File.Exists(file))
        return NotFound();

    var memory = new MemoryStream();
    using (var stream = new FileStream(file, FileMode.Open))
    {
        await stream.CopyToAsync(memory);
    }
    memory.Position = 0;
    return File(memory, "application/pdf", Path.GetFileName(file));
}

然而,如果存在防火墙或代理服务器,可能会跟踪请求与响应,并在控制某些头信息时出现问题。在这种情况下,可以使用以下代码,启用SSL协议中的强制下载。

[HttpGet]
public async Task DownloadFile()
{
    var file = Path.Combine(Directory.GetCurrentDirectory(), "Files", "example.pdf");

    if (!System.IO.File.Exists(file))
        return NotFound();

    var memory = new MemoryStream();
    using (var stream = new FileStream(file, FileMode.Open))
    {
        await stream.CopyToAsync(memory);
    }
    memory.Position = 0;
    
    // 添加响应头以区分一般响应和文件响应,并强制下载文件。
    Response.Headers.Add("Content-Disposition", $"attachment; filename={Path.GetFileName(file)}");
    return File(memory, "application/pdf");
}

当使用这种方式时,浏览器会自动下载文件,而不是在窗口中打开它。

相关内容

热门资讯

专业讨论!微信微乐辅助插件(透... 专业讨论!微信微乐辅助插件(透视)德普之星怎么开辅助(介绍教程有挂方略);无需打开直接搜索微信(13...
一分钟揭秘!皮皮胡子辅助(透视... 一分钟揭秘!皮皮胡子辅助(透视)pokemomo辅助软件(科技教程存在有挂)>>您好:软件加薇136...
透视好友房!广东雀神智能插件需... 透视好友房!广东雀神智能插件需要付费吗(透视)wepoker模拟器哪个好用(德州教程真的有挂);无需...
每日必看教程!广西老友麻将辅助... 每日必看教程!广西老友麻将辅助器(透视)wepoker辅助脚本(2026新版教程确实有挂)《详细加薇...
透视辅助!一键装方片十三张辅助... 透视辅助!一键装方片十三张辅助(透视)hhpoker软件可以玩吗(2026教程揭秘有挂);无需打开直...
玩家必看教程!财神十三张福袋多... 玩家必看教程!财神十三张福袋多少钱(透视)红龙poker有辅助吗(规律教程有挂细节)1、下载安装好财...
专业讨论!微信小游戏辅助器(透... 专业讨论!微信小游戏辅助器(透视)poker辅助器免费安装(力荐教程存在有挂) 了解更多开挂安装加(...
1.9分钟了解!九九联盟解码器... 九九联盟解码器是一款可以让一直输的玩家,快速成为一个“必胜”的ai辅助神器,有需要的用户可以加我微信...
透视辅助!we poker辅助... 透视辅助!we poker辅助器v3.3(透视)wepokerplus透视脚本免费(必备教程有挂教学...
一分钟揭秘!混沌休闲有没有挂(... 一分钟揭秘!混沌休闲有没有挂(透视)pokerworld软件(细节方法有挂规律)>>您好:软件加13...