【问题标题】:Prevent Chrome from downloading files阻止 Chrome 下载文件
【发布时间】:2016-01-17 01:38:15
【问题描述】:

我需要在 HTML 页面中的对象标记中显示文件。
我使用 C# MVC4 发送文件。在我的代码中,我设置了“Content-Type”和“Content-Disposition”标头。
当我将 Content-Type 设置为 Chrome 不知道的内容时,它会下载文件,而不管“Content-Disposition”标头如何。

HTML:

<div>
<object data="http://localhost/UncHelper?path=secrectPath\file.dwg"></object></div>

C#:

public override void ExecuteResult(ControllerContext context)
{
    context.RequestContext.HttpContext.Response.AddHeader("Content-Type", _contentType);
    context.RequestContext.HttpContext.Response.AddHeader("Content-Disposition", "inline; filename=\"" + _fileName + "\"");
    context.HttpContext.Response.WriteFile(_uncPath);
    context.HttpContext.Response.End();
}

当我尝试显示 pdf 文件 (_contentType = application/pdf) 时,一切正常。
但是当我尝试显示 .dwg (_contentType = application/dwg) 时,Chrome 会下载该文件。我怎样才能防止这种情况发生?

(我不想根据浏览器或类似的东西将 HTML 状态设置为 203。)

谢谢!

【问题讨论】:

  • 好吧,您希望浏览器如何处理它不知道如何显示的文件?如果 .dwg 文件是 AutoCad 文件,我怀疑 Chrome 是否能理解它。因此,最合乎逻辑的操作是下载文件,以便可以用适当的程序打开。
  • 感谢您的评论! FF 显示一条消息,指出“未找到插件”,这也是 Chrome 所需要的。

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


【解决方案1】:

这是不可能的,我认为这也是你的一个轻微误解。对于能够显示文件的浏览器,首先必须下载它。这适用于所有文件类型。例如,如果您正在显示image/jpeg 的图像,并且处置设置为inline,浏览器仍然会下载图像,然后将其显示为内联,而不是询问用户要将其保存在哪里.如果浏览器不知道如何显示文件,这不是一个选项,并且会默认使用唯一的另一个选项,即询问用户将文件保存在哪里。

【讨论】:

    猜你喜欢
    • 2015-05-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多