gpt4 book ai didi

asp.net-mvc - jquery post不允许在MVC应用程序中下载csv文件

转载 作者:行者123 更新时间:2023-12-04 18:22:08 28 4
gpt4 key购买 nike

我有一个带有 Jquery Post 的 MVC 应用程序

$.post(virtualPath + cookie + this.pageName + '/FunctionA/', parameters,function (filedata) {
alert(filedata);
},'application/csv');
}

这篇文章是从 Javascript 事件中调用的,该事件由单击按钮触发以下载文件

我得到服务器端 Http 文件响应
在警报中,但无法在浏览器中下载

Controller 将响应返回为 FileContentResult
[AcceptVerbs(HttpVerbs.Post)]
public FileContentResult FunctionA(string A, DateTime B)
{
try
{
string csv = "Make it downloadable ";
var filresult = File(new System.Text.UTF8Encoding().GetBytes(csv), "application/csv", "downloaddocuments.csv");
// return filresult;

Response.Clear();
Response.Buffer = true;
Response.ContentType = "application/vnd.ms-excel";
Response.AddHeader("content-disposition", "attachment; filename=Statement_" + "Downloadfile" + ".csv");
Response.Write(csv);
Response.Flush();
return filresult;
}
}

最佳答案

您不能使用 AJAX 下载文件。这是因为一旦下载成功并调用了成功回调,您既不能将文件自动保存到客户端浏览器,也不能提示“另存为”对话框。

因此,无需使用 javascript 和 AJAX 来下载此文件,只需使用指向 Controller 操作的标准链接,这将允许用户直接下载文件。

更新:

根据评论部分的要求,这是一个使用 anchor 的示例:

@Html.ActionLink(
"download file",
"actionName",
"controllerName",
new {
param1 = "value1",
param2 = "value2",
},
null
)

或者,如果您需要传递大量参数,您可能更喜欢使用带有隐藏字段的表单,该表单将 POST:
@using (Html.BeginForm("actionName", "controllerName"))
{
@Html.Hidden("param1", "value1")
@Html.Hidden("param2", "value2")
<button type="submit">Download file</button>
}

关于asp.net-mvc - jquery post不允许在MVC应用程序中下载csv文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10440611/

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