我必须在点击锚标记的新标签页中打开doc文件或pdf文件。我正在使用MVc 4.0。 浏览器尝试在新选项卡中打开文件但在此之前打开下载屏幕/弹出窗口并限制文件在新选项卡中打开。我已经检查了互联网和stackoverflow的答案,我写的是做target = _blank但它是不适合我。
我已经定义了我的锚链接如下。我有文件名,这将是唯一的,因为我使用datetime.now.tofiletime()创建文件名。所以,我直接给了我的文件名。但是我首先要检测文件是文件文件还是PDF文件还是图像也可以。下面的代码服务器也可以这个用途吗?请指导:
<a href="/MyController/ViewDocument?FileName=145357456705009879.docx" target="_blank" title="View Document" style="display:block;" class="ViewDetailClass"> </a>
然后我在MyController类中有下面的Action方法。
public ActionResult ViewDocument(string FileName)
{
try
{
var FullPath = Path.Combine(Server.MapPath("~/Content/Resources"), FileName);
if (!System.IO.File.Exists(FullPath))
{
return HttpNotFound();
}
var contentType = "text/plain";
return File(FullPath, contentType, Path.GetFileName(FullPath));
}
catch
{
}
return File(new byte[] { }, "text/plain");
}
答案 0 :(得分:1)
这取决于客户端的设置。几乎总是下载docx文件,因为它无法在浏览器中显示。对于PDF文件,它取决于。在chrome中,它在浏览器中打开标准,但你可以告诉它不要这样做并在另一个应用程序中打开它。
这些是客户端的设置,您无法从服务器控制这些设置。哪个是好的,因为如果这是用户的偏好,那将感觉正常。