将文件从控制器发送到MVC中的视图

时间:2019-04-12 16:28:11

标签: html5 asp.net-mvc-5

我正在尝试将文件从家庭控制器传递到视图。 EventID值通过ajax调用从视图传递到控制器。控制器通过EventID在数据库中进行查找来获取文件名和路径。控制器返回一个文件,但它不会在视图上下载,很有可能我在ajax调用的成功部分中未正确处理它。控制器方法运行良好,问题出在视图的成功部分。

查看

                $('#btnDownloadReport').click(function () {

                    var data = {
                        EventID: selectedEvent.eventID,
                    }

                    downloadReport(data);
                })

视图中的Ajax调用

                function downloadReport(data) {
                    $.ajax({
                        type: "POST",
                        url: '/home/GetFiles',
                        data: data,
                        success: function (data) {
                                $('#myModal').modal('hide');
                        },
                        error: function () {
                            alert('Failed');
                        }
                    })

                }

家庭控制器中的控制器动作方法

public ActionResult GetFiles(int eventId)
        {
           ViewData["eventID"] = eventId;
            using (MyDatabaseEntities1 dc = new MyDatabaseEntities1())
            {
                var sc = dc.ScanReports.FirstOrDefault(x => x.EventID == eventId);
                var path = Path.Combine(Server.MapPath("~/App_Data/reports/"), sc.FileName + sc.FileExtension);
                byte[] fileBytes = System.IO.File.ReadAllBytes(path);
                return File(fileBytes, System.Net.Mime.MediaTypeNames.Application.Octet, sc.FileName);
            }
        }

0 个答案:

没有答案