MongoDB 3.2 C#驱动程序版本2.2.3.3 Gridfs下载超过2gb的大文件

时间:2016-02-04 15:42:17

标签: mongodb mongodb-.net-driver

我使用以下代码上传文件:

using (var s = File.OpenRead(@"C:\2gbDataTest.zip"))           

{

 var t = Task.Run<ObjectId>(() =>

{

return fs.UploadFromStreamAsync("2gbDataTest.zip", s);

});


 return t.Result;

}

//works for the files below 2gb

  var t1 = fs.DownloadAsBytesAsync(id);

            Task.WaitAll(t1);
            var bytes = t1.Result;

我收到错误

enter image description here

我是MongoDb和C#的新手,有人可以告诉我如何下载大小超过2GB的文件吗?

2 个答案:

答案 0 :(得分:2)

你在下载的字节数组(保存在内存中)的大小方面达到了极限,所以你唯一的选择就是使用Stream,就像你上传时一样,(有一个有效的目的地) ):

IGridFSBucket fs;
ObjectId id;
FileStream destination;

await fs.DownloadToStreamAsync(id, destination);

答案 1 :(得分:0)

//只为其他人编写完整的代码,这将有效; // 感谢&#34; Adam Comerford&#34;

var fs = new GridFSBucket(database);

使用(var newFs = new FileStream(filePathToDownload,FileMode.Create))

{

// id是文件objectId

var t1 = fs.DownloadToStreamAsync(id,newFs);

Task.WaitAll(T1);

newFs.Flush();

newFs.Close();

}