从sql server下载varbinary数据
我有一个带有Varbinary(Max)
列的SQL Server表,它基本上是压缩数据。
我的页面允许用户下载此数据(在通常的用户身份validation之后)。
过去工作正常,数据量较小,但现在随着时间的推移,数据也越来越大。 在“保存”对话框出现之前,我基本上面临很多问题等待时间。
码:
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#codebehind
您需要回传流响应。 读取内存中的整个文件然后将其写出不会扩展,随着请求数量或文件大小的增加,您将开始耗尽服务器。
通过ASP.Net MVC和FILESTREAM MVC查看从SQL Server下载和上载图像:从SQL Server下载和上载图像以查看如何执行此操作的示例。 因为你不使用MVC而是直接ASP.NEt你可以更简单,但想法是相同的:
这可能会有所帮助:
Response.AppendHeader("Content-Type", "application/gzip "); Response.OutputStream.Write((Byte[])reader["backupdata"],0,((Byte[])reader["backupdata"]).Length);
您可以使用sql2012中的文件流表直接存储文件
上述就是C#学习教程:从sql server下载varbinary数据分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/cdevelopment/988217.html