我的问题详细说明:我正在尝试使用HttpPost请求将我创建的服务器端(C#,MVC,ASP.NET)的excel文件发送到客户端。
响应标题和内容都正确显示(检查网络消息显示响应数据实际包含excel),但不会打开下载作为提示。
控制器:
[HttpPost]
public ActionResult ExtractFilteredCOTs(COTJSON[] cots, string logo, string zone, string type, int numcol)
{
try
{
//some data mods...
string fullpath = EPPlusExcelWriter.generateExcel(cotds, logo, type, zone, numcol);
FileInfo fileInfo = new FileInfo(fullpath);
Response.Clear();
Response.ClearHeaders();
Response.ClearContent();
Response.AddHeader("Content-Disposition", "attachment; filename=\"" + fileInfo.Name + "\"");
Response.AddHeader("Content-Length", fileInfo.Length.ToString());
Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
Response.Flush();
Response.TransmitFile(fileInfo.FullName);
Response.End();
return null; // return base.File(fullpath, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
}
catch (Exception e)
{
return null;
}
}
JavaScript调用:
var handleError = function (data) {
vm.addErrorAlert("Excel Extraction Failed: " + data);
};
var handleSuccess = function (data) {
vm.addSuccessAlert("Excel Extraction Success");
console.log(data);
};
HttpService.postRequest("/Home/ExtractFilteredCOTs", { cots: cots2, logo: vm.reportLogosChoice, zone: GMT, type: vm.reportTypesChoice, numcol: vm.reportNumCols }, handleSuccess, handleError);
excel文件在console.log和post响应中正确,但不保存或打开。
我做错了什么线索? 我已经在StackOverFlow上查看了其他100个解决方案,但似乎没有实际工作(或者我不完全理解答案实际上做了什么,并且公然的复制粘贴不起作用)。