Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/427.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何将文件返回给用户?_Javascript_C# - Fatal编程技术网

Javascript 如何将文件返回给用户?

Javascript 如何将文件返回给用户?,javascript,c#,Javascript,C#,我正在尝试将文件返回给用户 “GetExcel”似乎可以工作,在调试中我可以看到“ba”有数据 该方法完成了,但似乎没有返回到浏览器-我希望看到文件下载对话框 C# public FileResult GetExcel() { using (ExcelPackage pck = new ExcelPackage()) { ExcelWorksheet ws = p

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

“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) {
            })

        };
jQuery的
$.get()
函数通过AJAX将数据从网页拉入客户端脚本。如果你想下载一个文件,这不是你想做的。相反,您应该打开一个新选项卡,该选项卡设置为要下载的文件的URL

试试这个:

function clickedTest() {
  window.open(myPath + "/Employee/GetExcel", "_blank");
}
如果您的浏览器仍然没有启动下载,而只是显示了一个文件,那么您可能需要更进一步

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

这可以通过以下方式完成:

Response.AddHeader("Content-Disposition", "attachment;filename=myfile.xls")
当然,用电子表格的正确文件名替换
myfile.xls

jQuery的
$。get()
函数通过AJAX将网页中的数据拉入客户端脚本。如果你想下载一个文件,这不是你想做的。相反,您应该打开一个新选项卡,该选项卡设置为要下载的文件的URL

试试这个:

function clickedTest() {
  window.open(myPath + "/Employee/GetExcel", "_blank");
}
如果您的浏览器仍然没有启动下载,而只是显示了一个文件,那么您可能需要更进一步

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

这可以通过以下方式完成:

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

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

改用
location.href=myPath+“/Employee/GetExcel”
或使用XHR2下载文件。常规的
jQuery.get
方法不适用于文件下载。如果您添加为答案,我将勾选它…请改用
location.href=myPath+“/Employee/GetExcel”
或使用XHR2下载文件。常规的
jQuery.get
方法不适合文件下载。如果您添加为答案,我将勾选它。。。