从sql server下载varbinary数据

2024-03-15

我有一个 SQL Server 表,其中包含Varbinary(Max)基本上是压缩数据的列。

我的页面允许用户下载此数据(在通常的用户身份验证之后)。

以前它工作得很好,数据量较小,但现在随着时间的推移,数据也越来越大。我面临很多问题,基本上是在“保存”对话框出现之前等待一段时间。

Code:

 while (reader.Read())
            {
                Response.Buffer = false;
                Response.Charset = "";
                Response.Cache.SetCacheability(HttpCacheability.NoCache);
                Response.ContentType = "application/gzip";
                Response.AddHeader("content-disposition", "attachment;filename="
                + "vbet_1_1.sdf.gz");
                byte[] bytes = (Byte[])reader["backupdata"]; // STUCK HERE
                Response.BinaryWrite(bytes);
                Response.Flush();
                Response.End();
            }

在调试器中,我可以看到

byte[] bytes = (Byte[])reader["backupdata"];

就是滞后所在。

我的平台是 ASP.Net,带有 .NET Framework 4.0、SQL Server 2008、C# 代码隐藏


您需要将响应流式传输回来。读取内存中的整个文件然后将其写出不会扩展,并且随着请求数量的增加,您将开始耗尽服务器的资源or文件的大小增加。

看一下通过 ASP.Net MVC 从 SQL Server 下载和上传图像 http://rusanu.com/2010/12/28/download-and-upload-images-from-sql-server-with-asp-net-mvc/ and FILESTREAM MVC:从 SQL Server 下载和上传图像 http://rusanu.com/2011/02/06/filestream-mvc-download-and-upload-images-from-sql-server/查看如何执行此操作的示例。由于您不使用 MVC,而是直接使用 ASP.NEt,因此您可以做得更简单,但想法是相同的:

  • 使用流式 API 读取数据库响应(具体来说SqlCommand.ExecuteReade with CommandBehavior.SequentialAccess http://msdn.microsoft.com/en-us/library/system.data.commandbehavior.aspx)并使用分块读取响应SqlDataReader.GetBytes() http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqldatareader.getbytes.aspx(再次注意 MSDN 上关于重要性的小片段SequentialAccess旗帜...)
  • 使用流式 API 编写 HTTP 响应。Response.BinaryWrite() http://msdn.microsoft.com/en-us/library/system.web.httpresponse.binarywrite.aspx会做。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

从sql server下载varbinary数据 的相关文章

  • ASP.NET Web API 客户端 ProgressMessageHandler Post 任务卡在 WinForm 应用程序中

    我在用着HttpClient and ProgressMessageHandler来自MS ASP NET Web API 客户端库 http nuget org packages Microsoft AspNet WebApi Clien
  • 防止 boost::asio::io_context 在空轮询调用时停止

    此代码调用发布的句柄 boost asio io context ioc boost asio post ioc std cout lt lt lol lt lt std endl ioc poll 而这并没有 boost asio io
  • 时间:2019-03-17 标签:c#ThreadSafeDeepCopy

    我一直在阅读很多其他问题以及大量谷歌搜索 但我一直无法找到明确的解决方案 根据我读过的一些最佳实践 类的静态方法应该创建线程安全的 并且实例成员应该将线程安全留给消费者 我想为该类实现深度复制方法 该类本身还有其他引用类型成员 有没有什么方
  • fprintf() 线程安全吗?

    我正在为野人就餐问题的某些变量编写一个 C 解决方案 现在 我创建线程 每个线程都将 FILE 获取到同一个调试文件 在线程内我正在使用 fprintf 进行一些打印 打印的语句不受任何类型的互斥锁等保护 我没有在调试文件中观察到任何交错行
  • ASP.NET 中获取当前域的最佳方法是什么?

    我想知道在 ASP NET 中获取当前域的最佳方法是什么 例如 http www domainname com subdir http www domainname com subdir 应该产生http www domainname co
  • 如何获取 QTableView 的标题列表?

    我有一个QTableView我的对话框中的对象 我需要访问该表的水平标题并将它们放入QStringList object 尽管进行了大量搜索 但我在 Qt 文档中找不到如何获取此标头列表 编辑 我发现的最接近的地方是this https w
  • 如何在 QTabWidget Qt 中展开选项卡

    我有一个QTabWidget像这个 但我想展开选项卡以 填充 整个小部件宽度 如下所示 我怎样才能做到这一点 我在用Qt 5 3 2 and Qt 创建者 3 2 1 Update 我尝试使用setExpanding功能 ui gt myT
  • 将二进制数据从 C# 上传到 PHP

    我想将文件从 Windows C 应用程序上传到运行 PHP 的 Web 服务器 我知道 WebClient UploadFile 方法 但我希望能够分块上传文件 以便我可以监控进度并能够暂停 恢复 因此 我正在读取文件的一部分并使用 We
  • 如何通过 JsonConvert.DeserializeObject 在动态 JSON 中使用 null 条件运算符

    我正在使用 Newtonsoft 反序列化已知的 JSON 对象并从中检索一些值 如果存在 关键在于对象结构可能会不断变化 因此我使用动态来遍历结构并检索值 由于对象结构不断变化 我使用 null 条件运算符来遍历 JSON 代码看起来像这
  • 每个租户的唯一用户名和电子邮件

    我正在使用以下代码编写多租户应用程序ASP NET Core 2 1 我想覆盖默认的与用户创建相关的验证机制 目前我无法创建多个具有相同的用户UserName My ApplicationUser模型有一个名为TenantID 我想要实现的
  • 如何分析组合的 python 和 c 代码

    我有一个由多个 python 脚本组成的应用程序 其中一些脚本正在调用 C 代码 该应用程序现在的运行速度比以前慢得多 因此我想对其进行分析以查看问题所在 是否有工具 软件包或只是一种分析此类应用程序的方法 有一个工具可以将 python
  • ASP.NET MailMessage.BodyEncoding 和 MailMessage.SubjectEncoding 默认值

    很简单的问题 但我在 MSDN 上找不到答案 查找 ASP NET 将用于的默认值 MailMessage BodyEncoding and MailMessage SubjectEncoding 如果你不在代码中设置它们 Thanks F
  • 在 EnvDTE 中调试时捕获 VS 局部变量

    是否可以使用 EnvDTE 进行 vsix Visual Studio 扩展来捕获本地和调试窗口使用的调试数据 或者可以通过其他方法吗 我想创建一个自定义的本地窗口 我们可以修改它以根据需要显示一些较重的内容 而无需为高级用户牺牲原始的本地
  • 新任务中使用的依赖注入服务

    我在需要时使用依赖项注入来访问我的服务 但我现在想要创建一个并发任务 但这会由于依赖项注入对象及其生命周期而导致问题 我读过这篇文章 标题 防止多线程 Link http mehdi me ambient dbcontext in ef6
  • cout 和字符串连接

    我刚刚复习了我的 C 我尝试这样做 include
  • 了解使用 Windows 本机 WPF 客户端进行 ADFS 登录

    我已经阅读了大量有关 ADFS 与 NodeJS Angular 或其他前端 Web 框架集成以及一般流程如何工作的文献 并通过 Auth0 Angular 起始代码构建了概念证明 但我不明白如何这可以与本机 WPF Windows 应用程
  • 使用taskkill停止Windows服务

    我需要帮助来使用 C 终止 Windows 服务 现在要终止该服务 请使用以下选项 从命令 sc queryex ServiceName 发现后PID服务的 taskkill pid 1234 exemple f 为了便于阅读 但如果您明白
  • 矩阵到数组 C#

    这将是转换方阵的最有效方法 例如 1 2 3 4 5 6 7 8 9 into 1 2 3 4 5 6 7 8 9 in c 我在做 int array2D new int 1 2 3 4 5 6 7 8 9 int array1D new
  • 将 char[][] 转换为 char** 会导致段错误吗?

    好吧 我的 C 有点生疏了 但我想我应该用 C 来做我的下一个 小 项目 这样我就可以对其进行抛光 并且我已经有不到 20 行的段错误了 这是我的完整代码 define ROWS 4 define COLS 4 char main map
  • QFileDialog::getSaveFileName 和默认的 selectedFilter

    我有 getSaveFileName 和一些过滤器 我希望当用户打开 保存 对话框时选择其中之一 Qt 文档说明如下 可以通过将 selectedFilter 设置为所需的值来选择默认过滤器 我尝试以下变体 QString selFilte

随机推荐

  • 使用 jquery 突出显示表行

    我知道有很多关于此的帖子 但我不知道为什么我的不起作用 我试图突出显示表中的一行 tr class videorow td td tr css highlight background color a8cb17 最后是我的 jQuery j
  • 如何更改Linux中ipython/jupyter笔记本使用的默认浏览器?

    我使用的是 Linux Mint 17 3 如何更改 Jupyter Notebook 使用的默认浏览器 我已将笔记本安装为 Anaconda 3 的一部分 并在我的默认浏览器 Chrome 中打开 但出于某种原因 Chrome 不允许我创
  • 对抛出异常的控制器进行单元测试

    我有一个具有以下签名的控制器 public CustomerTypeController IHttpContextAccessor accessor IPrincipalProvider provider IMapper mapper IL
  • 在 Cypress 中如何根据名称选择输入元素?

    我开始学习Cypress 我想使用 cypress io 选择输入字段并提供电话号码 我遵循的代码但它不起作用 但是我可以使用 find 还是有其他方法让输入元素输入电话号码 cy get div contains Phone Number
  • LINQ To SQL 动态选择

    有人可以告诉我如何指示我希望在运行时从 LINQ To SQL 语句返回哪些列吗 我允许用户在复选框列表中选择项目 这些项目代表他们希望在绑定到 L2S 查询结果的网格视图中显示的列 我能够动态生成 W HERE 子句 但无法对 SELEC
  • 如何使用 cURL 从 GitHub 下载 tarball?

    我正在尝试使用以下命令从 GitHub 下载 tarballcURL http en wikipedia org wiki CURL 但它似乎没有重定向 curl insecure https github com pinard Pymac
  • 错误:属性“颜色”已定义,更新 appcompat v-7

    我正在尝试将 Android Studio 项目中的 appcompat v7 从 v20 0 0 更新到 21 0 0 以使用材料设计组件 但我总是遇到相同的错误 错误 属性 颜色 已被定义 我不知道如何修复此错误 我在互联网上搜索但无法
  • Python:如何删除['和']?

    我想删除 从一开始和 从字符串末尾开始的字符 这是我的文字 45453656565 我需要这样的文字 45453656565 我尝试过使用str replace text text replace 但它不起作用 您需要通过将不需要的字符传递
  • 为什么 main() 需要大括号?

    我尝试了几种变体 main return or main if 并得到了不同的错误 其中最奇特的是 usr lib gcc i686 linux gnu 4 4 5 lib crt1 o In function start text 0x1
  • ANDROID STUDIO 无法访问fragment_main.xml中的对象

    我有一个简单的 Android 应用程序 布局文件夹显示一个activity main xml 文件和一个fragment main xml 文件 在该fragment xml 文件中 我放置了一个名为buttonTest 的按钮
  • Watchkit 动画实现:钟面、动画图表、圆形进度条

    我看过一些潜在 Watchkit 应用程序的非常基本的演示 其中一些似乎实现了动画 示例可能是 带有移动秒针甚至分针的钟面 条形图 其中的条形会随着新的实时数据进行动画显示或形状发生变化 圆形进度条 其进度条从零到当前值进行动画处理 到目前
  • [电子邮件受保护] 适用于 iPhone5

    我想更新我的应用程序 以便可以将其部署在 iPhone 5 上 Xcode 4 5 有一个 电子邮件受保护 cdn cgi l email protection这是一个黑色图像 640X1136 在iPhone5的模拟器中 仍然加载旧的 电
  • Rspec等于法

    据我了解 equal 方法检查对象是否相同 person Person create name gt David Person find by name David should equal person 这应该是真的 但这里不是有两个不同
  • 如何执行boost.test库中指定的测试套件

    我正在使用 Boost Test 库在 C 中实现单元测试用例 假设我有两间套房 例如 BOOST AUTO TEST SUITE TestA BOOST AUTO TEST CASE CorrectAddition BOOST CHECK
  • GWT:我如何重命名我的模块

    我想将下面的模块名称从 test 重命名为testing 但是当我将其从重构更改为测试时 它说 unable to find test gwt xml 它仍在寻找以前的模块名称 我该如何解决这个问题 thanks9
  • 调整变量跟踪分配长度

    在发布版本中 我从 GCC 4 4 7 收到以下信息警告 注意 使用 fvar tracking assignments 超出变量跟踪大小限制 重试而不使用 我是否超出了变量跟踪分配支持的变量名称长度 如果是的话 有没有办法调整支持的大小
  • Scipy/Pylab 错误..预期在:动态查找?

    在 OS X 上的 python 2 7 上使用全新的 Scipy numpy matplotlib 构建 我正在尝试import pylab但它似乎不起作用 为什么是这样 我收到的错误是 gt Traceback most recent
  • 我应该写 (x == 1) 或 (1 == x) 来检查值是否等于 1 吗? [复制]

    这个问题在这里已经有答案了 我想检查一个值是否等于1 以下代码行有什么不同吗 x 1 1 x 就编译器执行而言 在大多数语言中都是一样的 人们经常做 1 评估值 因为 1 不是左值 这意味着您不会意外地完成任务 Example if x 6
  • 渲染时捕获 TypeError:__init__() 得到意外的关键字参数“use_decimal”

    运行程序时我收到以下错误消息 Caught TypeError while rendering init got an unexpected keyword argument use decimal 这是我的代码 我正在使用 jquery
  • 从sql server下载varbinary数据

    我有一个 SQL Server 表 其中包含Varbinary Max 基本上是压缩数据的列 我的页面允许用户下载此数据 在通常的用户身份验证之后 以前它工作得很好 数据量较小 但现在随着时间的推移 数据也越来越大 我面临很多问题 基本上是