日期:2014-05-17  浏览次数:20735 次

ASP.NET上传大文件(几百兆)到oracle数据库Blob字段中,内存溢出,该怎么解决?
HttpPostedFile upFile = FileUpload1.PostedFile;
  int FileLength = upFile.ContentLength;
  Byte[] FileByteArray = new Byte[FileLength];
  Stream StreamObject = upFile.InputStream;
  int pos = upFile.FileName.LastIndexOf("\\");
  string ImgFName = upFile.FileName.Substring(pos + 1);
  StreamObject.Read(FileByteArray, 0, FileLength);
代码如上

------解决方案--------------------
光是用HttpPostedFile上传几百M的文件就没办法想象了
------解决方案--------------------
你这么大的文件,为什么一定要保存到数据库?为什么不能以文件的形式存放呢?
------解决方案--------------------
1、分段上传(不要一下子读取几百兆的数据一下就上传)
2、文件方式传送
------解决方案--------------------
用http的话silverlight或者flash分块上传,数据库好歹也找个key-value类型的nosql数据库啊,用oracle这是有多蛋疼
------解决方案--------------------
http://slfileupload.codeplex.com/
------解决方案--------------------
Blob可以存的下那么大的图片,但是这样写很占性能,期待有高雅的解决方案。
------解决方案--------------------
探讨

可以给个例子吗?因为数据库是客户自己弄的,我们说了不算~

------解决方案--------------------
图片传到服务器某个指定目录下,数据库保存文件名。。你那什么客户啊。无语。。就算勉强存进去了,读取的时候得花多长的时间啊