C#使用数据库上传和读取大文件

时间:2017-08-30 04:32:56

标签: c# sql-server asp.net-mvc

我需要上传和读取大文件(大小超过500 MB)。我在SQL Server中有一个包含数据类型varbinary(MAX)的列文件来存储。

我想使用C#上传和读取文件。我需要将字节数组传递给SQL Server数据库中的存储文件。但是在上传大文件时初始化字节时出错了。

我可以上传大小为250MB的文件。但我尝试上传文件超过500 MB,它在初始化字节数组时抛出“Out of Memory”异常。

 byte[] fileByte = new byte[file.ContentLength]; // "Out of Memory" exception
 file.InputStream.Read(fileByte, 0, fileByte.Length);

我也试过

 BinaryReader br = new BinaryReader(inputStream);
 byte[] fileByte = br.ReadBytes(file.ContentLength); // "Out of Memory" exception

我不想上传和下载文件以保证文件安全。如果有人帮我上传大文件或者修改“内存不足异常”,请告诉我。

感谢。

1 个答案:

答案 0 :(得分:0)

如果SP在具有bulkadmin服务器特权的人员下运行,则

SQL Server可以直接从文件系统读取文件。这个批量命令对我们有用:

update someTable
set FileData = (select * from openrowset(bulk ''' + @filepath + ''', single_blob) as blob)
where id = 1;

Share目录需要适当的权限,在所有物理上不在数据库服务器上的情况下,我们都遇到了问题。