日期:2014-05-20  浏览次数:20869 次

关于winform上传超大文件到ORACLE数据库的问题。。在线等待。。。。。。!!!
关于winform上传超大文件到ORACLE数据库的问题,我上传了一个700M的视频都出现了内存不够的问题,郁闷啊。
 
 我的做法:
FileStream fs = new FileStream(this.tb_FilePath.Text.Trim(), FileMode.Open, FileAccess.Read);
  byte[] buffByte = new byte[fs.Length];
  fs.Read(buffByte, 0, (int)fs.Length);
  fs.Close();
就是直接把他保存在了buffByte这个byte数组里了,结果文件太大了,不行啊。哎。请高手帮帮忙啊。。。

------解决方案--------------------
byte[] buffByte = new byte[fs.Length];这句使用不当,你构建的初始数组不应该用文件长度来构建,应该构建一个小的数组,多次循环读取文件。
------解决方案--------------------
你直接以byte丢到内存去,够才怪,分段来嘛,读个10来M 就写次盘。
------解决方案--------------------
数据库内部不适合直接存放大文件,你应该存放文件路径,文件上传到硬盘上。
------解决方案--------------------
探讨
现在就是要实现这个功能,我也没办法啊,现在必须让我实现。。。楼上的大哥有办法没?

------解决方案--------------------
FileStream fs = new FileStream(this.tb_FilePath.Text.Trim(), FileMode.Open, FileAccess.Read);
byte[] buffByte = new byte[20*1024];
while ((readCount = fs.Read(buffByte , 0, buffByte .Length)) > 0)
{
length = length + readCount;
if (length == fs.Length)
{
isLast = true;//最后一次上传
}
}