[英]Convert large files in byte[] to store in SQL Server (C#)
我有一个大小约为1.6 GB的文件。 我知道在SQL Server中存储大文件 。 但是我需要为此大文件生成Blob。
我正在使用以下代码为大型文件生成byte[]
:
string filePath = Server.MapPath(filename);
string filename = Path.GetFileName(filePath);
FileStream fs = new FileStream(filePath, FileMode.Open, FileAccess.Read);
BinaryReader br = new BinaryReader(fs);
Byte[] bytes = br.ReadBytes((int)fs.Length);
br.Close();
fs.Close();
它在扔
mscorlib.dll中发生类型'System.OutOfMemoryException'的异常,但未在用户代码中处理
我想知道如何将这个大文件转换为byte[]
?
您不应该这样做,或者使用块读取文件,或者如果您想将其上传到SharePoint,只需将两个流连接在一起,SharePoint库将完成其余工作,例如:
FileStream fileStream = File.OpenRead(filename);
SPFile spfile = theLibrary.Files.Add(fileName, fileStream, true);
这是在SharePoint服务器端对象模型中完成的,与CSOM相同。
Microsoft.SharePoint.Client.File.SaveBinaryDirect(clientContext, fileUrl, fileStream, true);
基本上,您不能这样做,而不是使用字节数组。
如果满足以下条件,则可以对大于2GB的对象执行此操作:
1)在64位系统上以64位模式运行。 32位应用程序无法处理大于1.5GB的内存。
2)正在运行.NET Framework V4.5或更高版本。 和
3)在app.config中设置了gcAllowVeryLargeObjects: gcAllowVeryLargeObjects元素
但是...数组索引器仍然限于整数-因此您不能对字节数组执行此操作,因为您的数组索引太大。
您可以使用流(允许约8TB)执行此操作,但不能使用数组。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.