无法在客户端(MVC)下载文件

时间:2019-06-03 08:48:23

标签: c# .net file model-view-controller download

当我尝试将Excel文件从服务器下载到客户端时,我没有任何响应。我有以下代码可以做到这一点。

public ActionResult Download()
{
    string file = "testfile.xlsx";

    string fullPath = Path.Combine(Server.MapPath("~/temp"), file);

    return File(fullPath, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", file);
}

我尝试将内容类型更改为“ application / vnd.ms-excel”,但仍然无法正常工作。

此操作中包含代码,但解析返回文件后没有任何反应。

为此操作,我还会添加ajax调用。

$('#Submit_Report').click(function (event) {
if (($('#txtReportMarket').val() == '') && ($('#txtReportPractice').val() == '')) {
            alert("Please enter a value to Generate Report based on!");
            event.preventDefault();
        }

        else {
            $.ajax({
                url: '/ShareTemplate/GenerateReport/',
                data: "{ 'ReportPractice': '" + $('#txtReportPractice').val() + "','ReportMarket':'" + $('#txtReportMarket').val() + "'}",
                dataType: "json",
                type: "POST",
                contentType: "application/json; charset=utf-8",
                success: function (data) {
                    alert(data["FileName"]);
                    $.ajax({
                        type: 'GET',
                        url: '/ShareTemplate/Download/',
                        success: function (data) {
                            alert("download Successful!");
                            @*window.open('@Url.Content("~/ShareTemplate/Download")')*@
                        },
                        error: function () {
                            DisplayError('Failed to load the data.');
                        }
                    });
                }
            });
        }
    });

第一个ajax调用工作正常,并且文件已生成并存储。但是第二个Ajax调用是问题所在,有时我也从第二个Ajax调用中获得成功消息,但是仍然没有下载文件。

1 个答案:

答案 0 :(得分:1)

在第一个ajax呼叫success中。放置以下代码,然后删除剩余的代码。

window.location = '@Url.Action("Download", "ShareTemplate")';