ASP.NET MVC下载并保存Excel文件不会要求用户下载

时间:2016-11-25 15:58:31

标签: javascript c# asp.net-mvc download

我的问题详细说明:我正在尝试使用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个解决方案,但似乎没有实际工作(或者我不完全理解答案实际上做了什么,并且公然的复制粘贴不起作用)。

0 个答案:

没有答案