MVC FilePathResult не загружает файл - PullRequest
0 голосов
/ 08 января 2019

FilePathResult не загружает файл

Я попытался вернуть файл (...), попытался изменить файл на пустую книгу, изменил местоположение файла

public ActionResult GenerateSupplyInformation(List<string> serialNumbers)
        {            
                if (serialNumbers != null)
                {
                    ViewBag.strmsg = "";
                    foreach (var serialNumber in serialNumbers)
                    {
                        if (!string.IsNullOrWhiteSpace(serialNumber))
                        {
                            var results = _ftRepository.GetSupplyInformation(serialNumber);

                            var filePath = _documentGenerator.GenerateSupplyInformation(serialNumber, results);

                            return new FilePathResult(filePath, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
                        }
                    }
                }

            }

            return null;
        }

Я ожидаю, что файл будет загружен, когда этот метод будет запущен, поскольку не выдается никаких исключений


Вот обновленная версия проблемы

Вот вызов ajax с удаленным вызовом downloadfile

$.ajax(
            {
                type: "POST",
                //url: "/JQueryAjaxCall/AjaxPostCall",
                url: "/RWM/GenerateSupplyInformation",
                data: JSON.stringify(models),
                contentType: "application/json; charset=utf-8",
                dataType: "json",
                success: function (response) {
                    //alert("response");
                }
            }
        );

Вот новый (er), вероятно, немного другой, хотя он ведет себя так же, метод контроллера

public ActionResult GenerateSupplyInformation(List<LxStockDataModel> records)
    {
        try
        {
            if (records != null)
            {
                ViewBag.strmsg = "";
                foreach (var serialNumber in records)
                {
                    if (!string.IsNullOrWhiteSpace(serialNumber.Serial_No))
                    {
                        var results = _ftRepository.GetSupplyInformation(serialNumber.Serial_No);

                        var filePath = _documentGenerator.GenerateSupplyInformation(serialNumber.Serial_No, results);

                        var file =  new FilePathResult(filePath, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
                        //return file;
                        return File(filePath, System.Net.Mime.MediaTypeNames.Application.Octet);
                    }
                }
                return View("RWMSummary", records);
            }
        }
        catch (Exception ex)
        {
            _log.Exception(ex);
        }
        return null;
    }

При любом возврате в методе File или FilePathResult я получаю то же поведение, что и файл не загружается. Я должен делать что-то не так ??

Ответы [ 2 ]

0 голосов
/ 09 января 2019

Вы пытались использовать метод "Файл"? Как это:

public ActionResult GenerateSupplyInformation(List<string> serialNumbers)
    {            
            if (serialNumbers != null)
            {
                ViewBag.strmsg = "";
                foreach (var serialNumber in serialNumbers)
                {
                    if (!string.IsNullOrWhiteSpace(serialNumber))
                    {
                        var results = _ftRepository.GetSupplyInformation(serialNumber);

                        var filePath = _documentGenerator.GenerateSupplyInformation(serialNumber, results);

                        return File(filePath, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", "YourDownloadedFileName.xls");
                    }
                }
            }

        }

        return null;
    }

Ожидается, что «filePath» будет полным путем к файлу (с именем и расширением)

Надеюсь, это поможет!

0 голосов
/ 09 января 2019

использовать FileResult вместо результата действия

public FileResult GenerateSupplyInformation(List<string> serialNumbers)
    {            
            if (serialNumbers != null)
            {
                ViewBag.strmsg = "";
                foreach (var serialNumber in serialNumbers)
                {
                    if (!string.IsNullOrWhiteSpace(serialNumber))
                    {
                        var results = _ftRepository.GetSupplyInformation(serialNumber);

                        var filePath = _documentGenerator.GenerateSupplyInformation(serialNumber, results);

                        return new FilePathResult(filePath, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
                    }
                }
            }

        }

        return null;
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...