Невозможно загрузить файл на стороне клиента (MVC) - PullRequest
0 голосов
/ 03 июня 2019

Я не получаю никакого ответа, когда пытаюсь загрузить файл 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 Ответ

1 голос
/ 03 июня 2019

В Первом ajax звоните success.Поместите приведенный ниже код и удалите оставшиеся.

window.location = '@Url.Action("Download", "ShareTemplate")';
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...