我使用以下代码上传文件:
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;
我收到错误
我是MongoDb和C#的新手,有人可以告诉我如何下载大小超过2GB的文件吗?
答案 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();
}