将 byte[] 中的大文件转换为存储在 SQL 服务器中 (C#)
Convert large files in byte[] to store in SQL Server (C#)
我有一个大小约为 1.6 GB 的文件。我知道 storing large file in 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();
正在投掷
An exception of type 'System.OutOfMemoryException' occurred in
mscorlib.dll but was not handled in user code
我想知道如何将这个大文件转换为 byte[]
?
基本上,不能使用字节数组。
您可以为大于 2GB 的对象执行此操作,如果您是:
1) 运行 在 64 位系统上以 64 位模式运行。 32 位应用程序无法寻址大于 1.5GB 的内存。
2) 运行 .NET Framework V4.5 或更高版本。
并且
3) 在您的 app.config 中设置了 gcAllowVeryLargeObjects:gcAllowVeryLargeObjects Element
但是...数组索引器仍然限于整数 - 因此您不能对字节数组执行此操作,因为您的数组索引太大了。
您可以使用流(允许约 8TB)但不能使用数组。
你不应该这样做,要么使用块读取文件,要么在你想将它上传到 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);
我有一个大小约为 1.6 GB 的文件。我知道 storing large file in 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();
正在投掷
An exception of type 'System.OutOfMemoryException' occurred in mscorlib.dll but was not handled in user code
我想知道如何将这个大文件转换为 byte[]
?
基本上,不能使用字节数组。
您可以为大于 2GB 的对象执行此操作,如果您是:
1) 运行 在 64 位系统上以 64 位模式运行。 32 位应用程序无法寻址大于 1.5GB 的内存。
2) 运行 .NET Framework V4.5 或更高版本。 并且
3) 在您的 app.config 中设置了 gcAllowVeryLargeObjects:gcAllowVeryLargeObjects Element
但是...数组索引器仍然限于整数 - 因此您不能对字节数组执行此操作,因为您的数组索引太大了。
您可以使用流(允许约 8TB)但不能使用数组。
你不应该这样做,要么使用块读取文件,要么在你想将它上传到 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);