我编写了从远程服务器查看文件的代码。我可以查看单击按钮的时间。实际上,当我点击按钮时,我想在新标签页中打开一个文件。这是我到目前为止所尝试的。
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);
}
这里的一切都很好,但文件将在同一个标签中打开。我想在新标签中打开它。当前代码中是否缺少任何内容?提前谢谢。
答案 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
);
主要问题是大多数客户将其作为弹出窗口阻止。最好通过模态或内部窗口加载当前选项卡。
您的最大问题是您无法从服务器控制客户端功能,因此您必须使用基于客户端的脚本来执行操作。