如何在 .Net MVC 中将文件从磁盘流式传输到客户端浏览器

2024-02-11

我的操作将文件从磁盘返回到客户端浏览器,目前我有:

public FileResult MediaDownload ()
{
  byte[] fileBytes = System.IO.File.ReadAllBytes(Server.MapPath(filePath));
  return File(fileBytes, System.Net.Mime.MediaTypeNames.Application.Octet, fileName);
}

这样,它将整个文件加载到内存中,并且速度非常慢,因为下载是在文件加载到内存后开始的。处理此类文件下载的最佳方法是什么?

谢谢


好吧,我看到了这个论坛的讨论:http://forums.asp.net/t/1408527.aspx http://forums.asp.net/t/1408527.aspx

就像魅力一样,正是我所需要的!

UPDATE

遇到这个问题如何在 ASP.NET Response 中传递大文件? https://stackoverflow.com/questions/9600856/how-to-deliver-big-files-in-asp-net-response事实证明它更简单,我现在是这样做的:

var length = new System.IO.FileInfo(Server.MapPath(filePath)).Length;
Response.BufferOutput = false;
Response.AddHeader("Content-Length", length.ToString());
return File(Server.MapPath(filePath), System.Net.Mime.MediaTypeNames.Application.Octet, fileName);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 .Net MVC 中将文件从磁盘流式传输到客户端浏览器 的相关文章

  • 实体框架代码优先 - 在另一个文件中配置

    使用 Fluent API 将表到实体的映射分开的最佳方法是什么 以便它全部位于单独的类中 而不是内联在 OnModelCreating 方法中 我目前在做什么 public class FooContext DbContext prote
  • .NET 可移植类库中的 .ToShortDateString 发生了什么

    我想知道为什么没有 ToShortDateString在 NET 可移植类库中 我有 2 个项目 Silverlight 和常规 NET 类库 使用相同的代码 并且代码涉及调用 ToShortDateString on a DateTime
  • 有没有比这更快的方法来查找目录和所有子目录中的所有文件?

    我正在编写一个程序 需要在目录及其所有子目录中搜索具有特定扩展名的文件 这将在本地驱动器和网络驱动器上使用 因此性能是一个问题 这是我现在使用的递归方法 private void GetFileList string fileSearchP
  • 使用 C# 使用应用程序密码登录 Office 365 SMTP

    在我们的 Office 365 公司帐户中实施两步身份验证之前 我的 C WPF 程序已成功进行身份验证并发送邮件 我使用了 SmtpClient 库 但现在我必须找到另一个解决方案 因为它不再起作用 我找不到任何使用 O365 应用程序密
  • 当我单击 GridView 项时返回 ImageView 实例

    当我点击GridView项时如何返回ImageView实例 我为 ItemClick 创建自定义绑定事件 public class ItemClickSquareBinding MvxBaseAndroidTargetBinding pri
  • 如果验证失败,如何在 ASP.NET MVC 中阻止 jquery ajax 提交

    我在用ASP NET 5 MVC RC1 我的 ASP NET MVC 使用的 jquery 验证插件是默认 ASP NET 5 模板项目使用的标准 jquery validate js jQuery Validation Plugin v
  • 字节到二进制字符串 C# - 显示所有 8 位数字

    我想在文本框中显示一个字节 现在我正在使用 Convert ToString MyVeryOwnByte 2 但是 当字节开头有 0 时 这些 0 就会被删除 例子 MyVeryOwnByte 00001110 Texbox shows g
  • 对数字进行向上和向下舍入 C++

    我试图让我的程序分别向上和向下舍入数字 例如 如果数字是3 6 我的程序应该四舍五入最接近的数字 4 如果该数字是3 4 它将向下舍入为 3 我尝试使用ceil库获取 3 个项目的平均值 results ceil marks1 marks2
  • 使用 VSTO 更改 Outlook 设置

    我刚刚花了大约 4 个小时试图弄清楚如何以编程方式检索 设置 Microsoft Outlook 2010 的 Outlook 设置 我所说的 设置 是指文件 选项 邮件下的设置 我想做的是检索用户设置的设置列表 自动化我们每天需要在某些消
  • 根据拦截和返回值自动重试客户端WCF调用

    是否可以拦截 WCF 调用的结果并重试该操作 例如 操作的返回值可能包含状态代码 指示我传递到原始调用的会话令牌已过期 在这种情况下 我可以检索新的会话令牌并使用新的会话令牌重试调用 是否可以通过使用 WCF 拦截返回值 检查它 然后以对操
  • 捕获当前正在播放的声音

    是否可以捕获计算机上当前播放的声音 如果能够将其保存为 mp3 就好了 但我认为这样做会存在一些法律问题 所以 wav 也可以 我环顾四周 有人建议使用虚拟音频线之类的东西 在 C 中捕获声音输出 https stackoverflow c
  • _mm_max_ss 在 clang 和 gcc 之间有不同的行为

    我正在尝试使用 clang 和 gcc 交叉编译一个项目 但在使用时发现一些奇怪的差异 mm max ss e g m128 a mm set ss std numeric limits
  • 当格式字符串包含“{”时,String.Format 异常

    我正在使用 VSTS 2008 C Net 2 0 执行以下语句时 String Format 语句抛出 FormatException 有什么想法是错误的吗 这是获取我正在使用的 template html 的位置 我想在 templat
  • 标准 C 中的 sizeof 与 sizeof()? [复制]

    这个问题在这里已经有答案了 我看到一些直接使用 sizeof 的代码 想知道它是否是标准 C 令我惊讶的是 它运行得很好 这是一个例子 include
  • OpenMP C 程序运行速度比顺序代码慢

    我是 OpenMP 的新手 正在尝试并行化 Jarvis 的算法 然而事实证明 与顺序代码相比 并行程序花费的时间要长 2 3 倍 难道问题本身就不能并行化吗 或者我并行化它的方式有问题 这是我针对该问题的 openMP 程序 其中有 2
  • 便携式终端

    有没有办法根据所使用的操作系统自动使用正确的 EOL 字符 我在想类似的事情std eol 我知道使用预处理器指令非常容易 但很好奇它是否已经可用 我感兴趣的是 我的应用程序中通常有一些消息 稍后我会将这些消息组合成一个字符串 并且我希望将
  • 改进C++逐行读取文件的能力?

    我正在解析大约 500GB 的日志文件 我的 C 版本需要 3 5 分钟 我的 Go 版本需要 1 2 分钟 我正在使用 C 的流来流式传输文件的每一行以进行解析 include
  • 如何使用 g++ 在 c++ 20 中使用模块?

    我读了这个链接https gcc gnu org wiki cxx modules https gcc gnu org wiki cxx modules并尝试从该网站复制以下示例 我已经知道这个编译器部分支持模块系统 注 我用的是windo
  • 有没有办法让 VS2010 在我的方法中扩展或收缩 try 块?

    我的代码有很多 try catch finally 块 与我在 VS2010 中的方法不同 除了添加区域之外 我无法在开发时扩展或收缩这些区域来隐藏内容 try vm R vm Qu vm T vm D vm Fil vm Type vm
  • 当我读取 500MB FileStream 时出现 OutOfMemoryException

    我使用 Filestream 读取大文件 gt 500 MB 但出现 OutOfMemoryException 任何有关它的解决方案 我的代码是 using var fs3 new FileStream filePath2 FileMode

随机推荐

  • 我什么时候应该在 Asp.Net Core 中使用 Task.Run?

    我相信您永远不必在 net core web 上下文中使用 Task Run 进行任何操作 如果您有一个长时间运行的任务或 CPU 密集型任务 您可以将其卸载到消息队列以进行异步处理 如果您有一个同步操作 但没有等效的异步方法 那么卸载到后
  • 文档中的 Firebase 云函数幂等性

    我正在关注 Firestore 的文档这里关于聚合查询 https cloud google com firestore docs solutions aggregation 我忍不住注意到云函数解决方案无法完全工作 因为它不是幂等的 nu
  • 我遇到此错误执行 org.jetbrains.kotlin.gradle.internal.KaptExecution 时发生失败

    在我的应用程序中 我有一个模型类 它有一些变量 我可以使用改造和房间数据库在该应用程序中调用并显示这些数据 这意味着该应用程序首先从服务器收集数据 然后显示在房间数据库中 但是当我在这个模型类中使用列表时 它显示了这个错误 这是我的代码 M
  • 我该如何转换这个 linq 表达式?

    假设我有一个要查询并应用排名的实体 public class Person Entity public int Id get protected set public string Name get set public DateTime
  • git lfs 迁移后 git repo 损坏

    git lfs migrate 使用不当 一切都会以某种方式生成包含每种已知文件类型的 gitattributes 文件 这基本上摧毁了我们的项目 因为每种类型的所有文件现在看起来都是这样的 version https git lfs gi
  • Git - 拉取后缺少标签

    它不是 几乎 因为 stackoverflow 不允许 精确标题的重复 Git Pull 一切都是最新的 但事实并非如此 https stackoverflow com questions 8350567 git pull everythi
  • ImportError:动态模块没有定义 init 函数,但它确实定义了

    我正在尝试为供应商 C 库编写绑定 我已经成功地使用如下代码片段在其他模块中定义 init 函数 但在这个模块中它似乎不起作用 它编译得很好 但是当我尝试将其导入到测试中时就会抛出 ImportError脚本 这里可能出了什么问题 ifnd
  • DirectX 11 叠加

    我正在为游戏编写 DirectX 11 覆盖 创建纹理非常简单 而且我对 C C 有很好的了解 我遇到的问题是在我的测试窗口中我可以打印纹理 但是一旦我改变相机角度 纹理就会随之移动 这就是大多数人想要的 我想知道的是如何以 2D 打印某些
  • 如何将球形贴图投影到球体/立方体上:“等距矩形到立方体”

    更新 我找到 http os ivrpa org panosalado wiki http os ivrpa org panosalado wiki 在java中有一个实现 谁有类似的 c 或 c 东西 我有这张全景图 来自谷歌街景的球形地
  • 用Java创建虚拟打印机

    我想使用 Java 创建一个虚拟打印机 这样当您打印文件 使用 Word 或其他东西 时 Java 打印机就会被列为有效打印机 我的目标是获取程序 Word 等 直接发送到打印机的打印机格式化对象 我不知道这是否可能 对于这个问题来说 这似
  • 合并 git 中没有真正共同祖先的复制存储库的更改

    我有一个项目 DemoA 它是基于 git 存储库 Project1 构建的 不幸的是 DemoA 一开始只是 Project1 文件的副本 然后才变成一个实际的长期项目 我现在想让 Project1 成为 DemoA 的子模块 但更重要的
  • 如何创建命名引用类型元组?

    以下行创建一个命名的ValueTuple var tuple a 1 b 2 c 3 d 4 e 5 f 6 值类型无法有效传递 做C 7提供了一种创建命名元组的方法Tuple type 如果你的意思是是否有办法将其他名称附加到System
  • FaceBook API,应用内登录

    我跟着本指南 http developers facebook com docs guides mobile ios我已经通过 Facebook 集成成功创建了我的应用程序 有什么问题 当用户必须登录时 应用程序会在浏览器中退出 或在 Fa
  • 如何打开Lucene 4.3索引?

    我是 Lucene 新手 我正在尝试使用 Luke 打开 Lucene 4 3 索引 我使用简单的 Lucene 4 3 1 应用程序创建 但它一直给我 该位置的目录无效 请检查控制台以获取更多信息 最后一个异常 java lang Ill
  • 在物理设备上测试

    我是否正确理解 我必须支付 99 美元才能在物理设备上使用我的 Windows Phone 应用程序 我制作了一个小应用程序 想在我的新手机上测试 但它不是我计划发布的应用程序 因此我不会仅仅为了看到该应用程序在物理设备上运行而支付 99
  • 如何使用 xunit.runner.console 指定自定义参数

    我有一个 C Selenium Specflow 测试套件 我正在使用 xunit console exe 使用 Jenkins 运行该测试套件 我需要将这些测试指向不同的环境 测试 QA 产品等 并且想使用命令行参数 我调用的批处理命令是
  • Visual Studio 2017 中实体框架“数据库优先”的替代品是什么

    简单的问题 我正在使用 Visual Studio 2017 虽然我知道 EF 中的 数据库优先 方法已经消失 但我想知道替代方法是什么 我特别想做的是从现有数据库生成类 我看到这个 EntityFramework 反向 POCO 生成器
  • 使用“sudo”重复上一个命令

    我经常忘记运行命令sudo 我正在寻找一种方法来创建 bash 函数 或别名 来重复最后一个命令sudo 就像是 S sudo history 1 有任何想法吗 你可以写 sudo See 9 3 历史扩展 Bash 参考手册 http w
  • 可以使用 ggplot2 在 R 中创建此图表吗?

    假设我有以下内容dataframe in R df1 lt read csv jan csv stringsAsFactors FALSE header TRUE str df1 data frame 4 obs of 5 variable
  • 如何在 .Net MVC 中将文件从磁盘流式传输到客户端浏览器

    我的操作将文件从磁盘返回到客户端浏览器 目前我有 public FileResult MediaDownload byte fileBytes System IO File ReadAllBytes Server MapPath fileP