【问题标题】:FileContentResult is being created and returned, but no file is being downloaded [duplicate]正在创建并返回 FileContentResult,但没有下载文件 [重复]
【发布时间】:2021-08-22 17:52:17
【问题描述】:

我正在为一个 asp.net 核心网络应用程序设计一个页面,该应用程序允许用户设计一个对象,并在按下按钮时为其下载 json。为了做到这一点,按钮使用 jquery 和 ajax 来点击以下控制器方法:

// GET: Missions/DownloadMission/5
[HttpGet, ActionName("DownloadMission")]
public FileContentResult DownloadMission(int id)
{
    Mission toDownload = db.Missions.Find(id);
    string json = JsonConvert.SerializeObject(toDownload);
    string fileName = (toDownload.Title + ".txt");
    string mimeType = "text/plain";
    byte[] bytes = Encoding.ASCII.GetBytes(json);
    return new FileContentResult(bytes, mimeType)
    {
        FileDownloadName = fileName
    };
}

ajax 请求中的.done(function() { 被运行,并且没有错误。因此,它似乎按预期工作。但是文件没有被下载

我已经在多个浏览器(Chrome、Firefox、Edge 甚至 IE)上对此进行了测试,并关闭了所有安全设置和阻止程序。这些变化都没有产生任何影响,所以我很难过。

【问题讨论】:

  • 您是否查看了浏览器调试控制台以查看实际返回的内容?
  • 我在 chrome 控制台中没有看到任何返回
  • 如果通过下载,您的意思是保存到您的计算机,ajax 不会这样做。见stackoverflow.com/a/23797348/1353011
  • @Musa 这就是答案,我错过了 js 方面的正确处理。谢谢

标签: c# ajax file asp.net-core download


【解决方案1】:

端点上提供的代码是正确的,但是需要在 ajax/js 端进行处理才能真正下载文件;因为目前它只是返回并且什么都不做。

可以在此处找到多个非常详细的参考资料:Handle file download from ajax post

【讨论】:

    猜你喜欢
    • 2017-09-17
    • 2020-07-19
    • 2020-12-02
    • 2016-11-11
    • 2014-11-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多