在浏览器中打开文件而不是下载它

2024-01-02

我有一个 MVC 项目,它将向用户显示一些文档。这些文件当前存储在 Azure Blob 存储中。

目前,这些文档是通过以下控制器操作检索的:

[GET("{zipCode}/{loanNumber}/{classification}/{fileName}")]
public ActionResult GetDocument(string zipCode, string loanNumber, string classification, string fileName)
{
    // get byte array from blob storage
    byte[] doc = _docService.GetDocument(zipCode, loanNumber, classification, fileName);
    string mimeType = "application/octet-stream";
    return File(doc, mimeType, fileName);
}

现在,当用户单击如下链接时:

<a target="_blank" href="http://...controller//GetDocument?zipCode=84016&loanNumber=12345678classification=document&fileName=importantfile.pdf

然后,该文件将下载到浏览器的下载文件夹中。我希望发生的事情(我认为这是默认行为)是让文件简单地显示在浏览器中。

我尝试更改 mimetype 并将返回类型更改为 FileResult 而不是 ActionResult,但均无济于事。

如何让文件显示在浏览器中而不是下载?


感谢所有答案,解决方案是所有这些答案的组合。

首先,因为我使用的是byte[]控制器的动作需要是FileContentResult不只是FileResult。发现这个感谢:ASP.NET MVC 中的四个文件结果有什么区别 https://stackoverflow.com/questions/1187261/whats-the-difference-between-the-four-file-results-in-asp-net-mvc

其次,mime 类型不能是octet-stream。据说,使用流会导致浏览器只下载文件。我不得不改变类型application/pdf。不过,我需要探索一个更强大的解决方案来处理其他文件/mime 类型。

第三,我必须添加一个标题来更改content-disposition to inline. Using 这个帖子 https://stackoverflow.com/questions/6293893/how-to-force-pdf-files-to-open-in-browser我发现我必须修改我的代码以防止重复的标头,因为内容处置已经设置为attachment.

成功的代码:

public FileContentResult GetDocument(string zipCode, string loanNumber, string classification, string fileName)
{
    byte[] doc = _docService.GetDocument(zipCode, loanNumber, classification, fileName);
    string mimeType = "application/pdf"
    Response.AppendHeader("Content-Disposition", "inline; filename=" + fileName);
    return File(doc, mimeType);
} 
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在浏览器中打开文件而不是下载它 的相关文章

随机推荐

  • 写入套接字输出流而不关闭它

    我想向服务器写入一些消息 每次 仅对于传输 我都会关闭输出流 并在必须发送下一条消息时重新打开它 os write msgBytes os write r n getBytes os flush os close 如何保持该 Socket
  • 主机不更新报告中的数据

    我正在尝试在 Raspberry Pi Pico 上使用 TinyUSB 开发自定义 UPS 并让 UPower 在我的 Ubuntu 主机上发现它 我试图向主机发出充电状态信号 但主机将电池报告为空 UPower 而不是充电 等离子桌面电
  • 如何 JSON.stringify dom 元素?

    如 title 所示 如何对 dom 元素进行 JSON stringify 并将 json 改回 dom 元素 有哪位知道怎么办吗 谢谢 Here is the code var container document querySelec
  • 如何使用 Tkinter after() 方法?

    我在使用时遇到问题after中的方法Tkinter 计划是打印i间隔一秒 我检查了是否after方法合适 但具体不知道 这是代码 coding utf 8 from Tkinter import import time root Tk ro
  • 卡尔曼滤波器:如何在没有“状态转换模型”的情况下使用它?

    我正在使用 Android 手机开发加速度计 我希望过滤掉加速度计返回记录手机移动的可怕噪音 我正在阅读卡尔曼滤波器 因为低通滤波器还不够 但我没有从ACCELERATION k 1 to ACCELERATION k 因为它是用户的动作
  • android 从url下载文件并保存到内存盘

    我尝试从 url 下载文件并将其保存到内存购物车 但我无法理解我的错误是什么 我的代码是 URL url new URL imageURL File file new File fileName long startTime System
  • 即使位于堆栈顶部,有时也会创建 singleTop Activity

    我有一个 Activity 其 launchMode 为 singleTop 在清单中 我的理解是 如果一个 Activity 是 singleTop 并且它位于 Activity 堆栈的顶部 那么使用新 Intent 启动 Activit
  • Python Windows 路径斜杠[重复]

    这个问题在这里已经有答案了 我在 python 脚本中使用目录路径面临一个非常基本的问题 当我从 Windows 资源管理器复制路径时 它使用反斜杠作为路径分隔符 这导致了问题 gt gt gt x D testfolder gt gt g
  • 有没有办法让 @Builder 注释适用于不可变类?

    我正在尝试在 Groovy 中开发一个项目 我一直在查看我的代码并尝试找到可以用更惯用的 Groovy 替换的区域 直到找到解决方案我遇到的另一个问题 https stackoverflow com questions 28355773 i
  • 使 div 向下滑动而不将内容向下推

    我有一个例子HERE http jsfiddle net yGZHC 我不知道如何使 div 向下滑动 但将内容保持在顶部 就像 div 向下滑动时不向下滑动一样 你能帮我解决这个问题吗 你的意思是类似这样吗 http jsfiddle n
  • java中如何从线程传播异常?

    Code outerMethod Override public void run innerMethod throws IOException 在线程中执行的方法会抛出检查异常 IOException 我需要在主线程中处理这个异常 喜欢
  • Twitter Fabric xcode - 上传分发时出错:存档分发错误:-3

    我正在尝试使用适用于 mac 的 Fabric 插件分发新的测试版 网络和代理配置正确 我可以使用浏览器访问需要代理验证的 URL 当我尝试上传应用程序时 该过程结束时出现错误 3 http 错误 400 存档分发错误 3 无法上传发行版
  • 有没有办法防止响应式引导程序占用太多宽度?

    我想使用 bootstrap 的响应式功能 但不适用于 gt 1200px 的布局 在宽度 gt 1200px 的设备上 它应该充当下方的设备尺寸 是否可以调整元视口或添加一些 css 以使最大设备宽度为 1200px 自定义引导程序最好的
  • 在 PropertyGrid 中使用自定义颜色选择器对话框

    在属性网格中默认颜色选择器对话框 https dl dropbox com u 14076298 ShareX 2013 10 mAGsVrcIPn png不允许设置颜色的 alpha 值 我已经做了我自己的颜色选择器对话框 https d
  • 使用主键以外的其他内容作为 RealURL id_field

    在 TYPO3 6 2 站点中 我有以下内容postVarSets在 realurl conf php 中用于 extbase 扩展 postVarSets gt array DEFAULT gt array wba gt array ar
  • 使用 REST Framework 从 Django 中的 POST 获取 JSON 数据

    我正在尝试在 Django 中为带有 Gspread 的 Google 电子表格构建 REST API 我遇到了很多问题 所以如果有人碰巧有完整的示例 请随时分享 好吗 其中一个问题是我正在尝试接收 POST 请求的 JSON 当然 稍后还
  • C# 中字符串“a”不等于字符“a”?

    所以 我有一种解析表达式的算法 此外 无论是否有括号 都有条件方式 我正在制作表达式并将其放入字符串变量中 例如 string expression 6 3 2 然后我让它通过解析函数 在它给我奇怪的结果之后 我去调试解析函数并注意到那里出
  • 如何为 Angular 2+ 编写可重用的私有库

    我使用 Angular CLI 创建了一个用于创建仪表板的通用框架 该框架由多个模块组成 有些模块是完全独立的 使用该库的开发人员可以根据需要在其项目中添加模块 我在 Angular Js 1 0 中创建了该框架的先前版本 在此我以 jav
  • 以编程方式在文本框中移动插入符、向上排列和向下排列

    我正在努力移动插入符DataGridView 中的文本框编辑控件 向上一行 向下一行 就像用户按向上和向下箭头时所看到的那样 所以我的意思不是换行符之间的行 而是文本框左侧和右侧之间的行 我无法使用 GetCharIndexFromPosi
  • 在浏览器中打开文件而不是下载它

    我有一个 MVC 项目 它将向用户显示一些文档 这些文件当前存储在 Azure Blob 存储中 目前 这些文档是通过以下控制器操作检索的 GET zipCode loanNumber classification fileName pub