如何在mvc 4中单击按钮时在新选项卡中下载文件

时间:2016-03-18 04:35:28

标签: c# asp.net-mvc-4

我编写了从远程服务器查看文件的代码。我可以查看单击按钮的时间。实际上,当我点击按钮时,我想在新标签页中打开一个文件。这是我到目前为止所尝试的。

 public ActionResult Download(string filepath, string filename)
        {
            service.Service objService = new service.Service();
            byte[] result = objService.DownloadFileFromDMS(filepath);
            System.IO.FileStream fs1 = null;
            string contentType = MimeMapping.GetMimeMapping(filepath);

            var cd = new System.Net.Mime.ContentDisposition
            {
                FileName = filename,
                Inline = true,
            };
            Response.AppendHeader("Content-Disposition",  cd.ToString());
            return File(result, contentType);
        }

这里的一切都很好,但文件将在同一个标​​签中打开。我想在新标签中打开它。当前代码中是否缺少任何内容?提前谢谢。

2 个答案:

答案 0 :(得分:2)

从View中调用下载控制器时,将其作为,

<a>

这里的诀窍是我们创建一个{target}属性设置为_blank的{{1}}标记。 这将在新选项卡中下载文件。

我只是假设在迭代文件项集合并添加“item.FilePath.ToString()”和“item.FileName.ToString()”属性时会发生这种情况。

在等待外部呼叫时,在这些类型的控制器中使用Async始终是个好主意。

答案 1 :(得分:0)

尝试使用类似下面的内容?

Page.ClientScript.RegisterStartupScript(
    this.GetType(), File(result, contentType), script, true
);

主要问题是大多数客户将其作为弹出窗口阻止。最好通过模态或内部窗口加载当前选项卡。

您的最大问题是您无法从服务器控制客户端功能,因此您必须使用基于客户端的脚本来执行操作。