gpt4 book ai didi

jquery - 如何通过 Jquery 调用 MVC FileContentResult 并让它提示用户在返回时保存?

转载 作者:行者123 更新时间:2023-11-30 23:47:10 27 4
gpt4 key购买 nike

我正在从 MVC 3 网站生成 CSV,并使用 FileContentResult 将其传递给用户。这效果很好,但生成 csv 需要 30 秒,因此在提示用户保存之前需要 30 秒。

    public virtual FileContentResult GetSpreadsheet(string id)
{
var service = new SpreadsheetService();
var result = service.GetCSV();
return File(new System.Text.UTF8Encoding().GetBytes(result.Message), "text/csv", "Report123.csv");
}

所以我想我应该通过 JQuery 调用它 - 但这(毫不奇怪!)只是将 CSV 转储到页面。

            $.post("/Home/GetSpreadsheet/" + id, null, function (data) {
$('#resultDiv').html(data);
});

有谁知道我现在已经取回数据后如何生成保存提示?谢谢

最佳答案

你不能这么做。把它给忘了。无法使用 AJAX 下载文件。事实上,AJAX 调用将起作用,您将访问服务器,服务器将文件内容发送回客户端,AJAX 成功回调将被触发并作为参数传递文件的内容,这就是您的一切结束的地方。由于绝对显而易见的原因,使用 javascript 您无法将文件直接保存到客户端计算机,并且无法提示“另存为”对话框。

因此,无需使用 AJAX,只需创建一个 anchor 即可:

@Html.ActionLink("download spreadsheet", "GetSpreadsheet", new { id = "123" })

现在,如果服务器将 Content-Disposition header 设置为 attachment,浏览器将提示用户下载文件并将其保存在计算机上的某个选定位置。

关于jquery - 如何通过 Jquery 调用 MVC FileContentResult 并让它提示用户在返回时保存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9821856/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com