如何将文件返回给用户?

时间:2017-03-22 10:13:51

标签: javascript c#

我正在尝试将文件返回给用户。

" GetExcel"似乎工作和调试我可以看到" ba"有数据。

该方法完成但是似乎没有任何内容返回给浏览器 - 我希望看到文件下载对话框。

C#

       public FileResult GetExcel()
        {           
            using (ExcelPackage pck = new ExcelPackage())
            {
                ExcelWorksheet ws = pck.Workbook.Worksheets.Add("Demo");

                ws.Cells["A1"].Value = "LBHERE";

                var ba = pck.GetAsByteArray();
                return File(ba, "text/plain", "testFile.txt");
            }

        }

Javascript

        function clickedTest() {
            alert("Test clicked");
            $.get(myPath + "/Employee/GetExcel", { }, function (data) {
            })

        };

1 个答案:

答案 0 :(得分:0)

jQuery的$.get()函数通过AJAX将数据从网页提取到客户端脚本中。如果要下载文件,这不是您想要执行的操作。相反,您应该打开一个新选项卡设置为您要下载的文件的URL。

试试这个:

function clickedTest() {
  window.open(myPath + "/Employee/GetExcel", "_blank");
}

如果您的浏览器仍未启动下载,而只是显示文件,则可能需要更进一步。

在服务器端代码的某处,当您有权访问Response对象时,应将Content-Disposition标头设置为附件,并为您提供的电子表格提供文件名。这将通知您的浏览器您要求的文件是要下载的,而不是显示的。

这可以按如下方式完成:

Response.AddHeader("Content-Disposition", "attachment;filename=myfile.xls")

当然,请使用电子表格的正确文件名替换myfile.xls