MVC下载文件示例

时间:2016-01-06 21:24:03

标签: javascript jquery asp.net-mvc download asp.net-mvc-5

我正在尝试从javascript函数下载文件。我看到很多服务器端代码的例子,我认为我的工作正常。

public ActionResult DownloadReport(LongParameterValueModel reportId)
    {
        Boolean isZipFile = false;
        String extension = "";
        String fileName = "";
        String contentType = "";
        try
        {
            using (MemoryStream ms = ReportRecord.GetReport(Session["bankId"].ToString(), reportId.Value, out isZipFile, out extension, out fileName))
            {
                if (isZipFile)
                {
                    // download instead of open in browser
                }
                else
                {
                    if (extension.ToUpper() == "PDF")
                    {
                        var cd = new System.Net.Mime.ContentDisposition
                        {
                            FileName = fileName.Replace(",", ""),
                            Inline = true,
                        };
                        Response.AppendHeader("Content-Disposition", cd.ToString());
                        contentType = "Application/pdf";
                    }
                    else
                    {
                        var cd = new System.Net.Mime.ContentDisposition
                        {
                            // for example foo.bak
                            FileName = fileName.Replace(",", ""),
                            Inline = true,
                        };
                        Response.AppendHeader("Content-Disposition", cd.ToString());
                        contentType = "text/plain";                            
                    }
                }

                return File(ms.ToArray(), contentType);
            }
        }
        catch(Exception ex)
        {

        }
    }

我无法找到的是如何调用该客户端以在新窗口中返回PDF / txt数据。我目前正在使用:

$.ajax({
        url: '@Url.Action("DownloadReport", "Search")',
        type: 'POST',
        cache: false,
        data: {
            Value: dataItem.ID
        },
        success: function (data, status, xhr) {

            var w = window.open("data:application/pdf;base64, " + data);
            //var w = window.open('about:blank', 'ReportViewer');
            //w.document.write(data);
            //w.document.close();
        },
        error: function (xhr, status, error) {
            alert(error);
        }
    });

但没有任何事情发生。注释版本打开一个空白窗口但没有任何内容写入(或者如果它没有显示PDF或txt文件)。

有什么想法吗?

感谢。

0 个答案:

没有答案