/// <summary> /// 下载文件 /// </summary> /// <param name="condition">下载字典条件</param> /// <param name="saveFile">保存文件到指定目录</param> public void DownLoad <T>(IDictionary <string, object> condition, string saveFile) where T : IMetaEntity, new() { if (condition == null || condition.Count == 0) { throw new InstrumentationException("条件condition不能为null或键数据为0。"); } var query = ConvertDictionaryToFilterDefinition <T>(DictionaryWarp(condition)); var id = GetCollection <T>().Find(query).Project(p => p.Id).FirstOrDefault(); if (id == ObjectId.Empty) { throw new FileNotFoundException(); } GridFSFileInfo info = FindOneById(id); if (info == null) { throw new MongoException("文件不存在。"); } using (var stream = new FileStream(saveFile, FileMode.OpenOrCreate)) { GridFS.DownloadToStream(id, stream); } }
public void DownLoad(ObjectId id, string saveFile) { GridFSFileInfo info = CheckGridFsFileExists(GridFS, id); using (var stream = new FileStream(saveFile, FileMode.OpenOrCreate)) GridFS.DownloadToStream(id, stream); }
/// <summary> /// 下载文件 /// </summary> /// <param name="condition">下载字典条件</param> /// <returns>返回下载流数据</returns> public Stream DownLoad <T>(IDictionary <string, object> condition) where T : IMetaEntity, new() { if (condition == null || condition.Count == 0) { throw new InstrumentationException("条件condition不能为null或键数据为0。"); } var query = ConvertDictionaryToFilterDefinition <T>(DictionaryWarp(condition)); var id = GetCollection <T>().Find(query).Project(p => p.Id).FirstOrDefault(); if (id == ObjectId.Empty) { throw new FileNotFoundException(); } GridFSFileInfo info = FindOneById(id); if (info == null) { throw new MongoException("文件不存在。"); } var stream = new MemoryStream(); GridFS.DownloadToStreamAsync(id, stream); stream.Position = 0; return(stream); }
internal static Stream GetMediaStream(BsonValue id) { var mediaFile = new MemoryStream(); GridFS.DownloadToStream(id, mediaFile); mediaFile.Position = 0; return(mediaFile); }
public void DownLoad <T>(ObjectId id, string saveFile) where T : IMetaEntity, new() { var info = GetDocument <T>(id); var gridfs = GetGridFS(info.Database); var fs = GetGridFsFile(gridfs, info.Id); using (var stream = new FileStream(saveFile, FileMode.OpenOrCreate)) GridFS.DownloadToStream(id, stream); }
/// <summary> /// 通过ObjectId下载文件 /// </summary> /// <param name="id">ObjectId</param> /// <returns>返回流</returns> /// <exception cref="NotImplementedException">未实现异常</exception> public Stream DownLoad(ObjectId id) { GridFSFileInfo info = GetGridFsFile(GridFS, id); var stream = new MemoryStream(); GridFS.DownloadToStream(id, stream); stream.Position = 0; return(stream); }
/// <summary> /// 通过ObjectId删除文件 /// </summary> /// <param name="id">ObjectId</param> /// <typeparam name="T">文件继承Meata类型</typeparam> public void Delete <T>(ObjectId id) where T : IMetaEntity, new() { var filter = Builders <T> .Filter.Where(p => id == p.Id); var result = GetCollection <T>().DeleteOne(filter); if (result.IsAcknowledged && result.DeletedCount > 0) { GridFS.Delete(id); } }
/// <summary> /// 删除文件 /// </summary> /// <param name="condition">条件</param> /// <typeparam name="T">文件继承Meata类型</typeparam> public void Delete <T>(IDictionary <string, object> condition) where T : IMetaEntity, new() { Excute(() => { var query = ConvertDictionaryToFilterDefinition <T>(DictionaryWarp(condition)); var list = GetCollection <T>().Find(query).Project(p => p.Id).ToList(); if (list.Count > 0) { GetCollection <T>().DeleteMany(ConvertDictionaryToFilterDefinition <T>(DictionaryWarp(condition))); list.ForEach(p => GridFS.Delete(p)); } } ); }
public void DownLoad <T>(Expression <Func <T, bool> > where, string saveFile) where T : IMetaEntity, new() { Excute(() => { var id = GetCollection <T>().AsQueryable().Where(where).Select(p => p.Id).FirstOrDefault(); if (id == ObjectId.Empty) { throw new FileNotFoundException("文件不存在。"); } using (var stream = new FileStream(saveFile, FileMode.OpenOrCreate)) { GridFS.DownloadToStream(id, stream); } }); }
/// <summary> /// 插入文件 /// </summary> /// <param name="context">文件流</param> /// <param name="entity">文件Meata对象</param> /// <typeparam name="T">文件继承Meata类型</typeparam> /// <returns>插入成功,返回对象<see cref="ObjectId"/></returns> public ObjectId Insert <T>(Stream context, T entity) where T : IMetaEntity, new() { return(Excute(() => { entity.FileSize = context.Length; context.Position = 0; var fsInfo = GridFS.UploadFromStream(entity.FileName, context); var info = GetGridFsFile(GridFS, fsInfo); entity.Id = fsInfo; entity.HashCode = info.MD5; context.Dispose(); context = null; GetCollection <T>().InsertOne(entity); return entity.Id; })); }
public Stream DownLoad <T>(Expression <Func <T, bool> > where) where T : IMetaEntity, new() { return(Excute(() => { var id = GetCollection <T>().AsQueryable().Where(where).Select(p => p.Id).FirstOrDefault(); if (id == ObjectId.Empty) { throw new FileNotFoundException("文件不存在。"); } var stream = new MemoryStream(); GridFS.DownloadToStream(id, stream); stream.Position = 0; return stream; })); }
/// <summary> /// 删除所有文件 /// </summary> /// <typeparam name="T">文件继承Meata类型</typeparam> /// <returns>true成功,false失败</returns> public bool DeleteAll <T>() where T : IMetaEntity, new() { return(Excute(() => { var list = GetCollection <T>().AsQueryable().Select(p => p.Id).ToList(); list.ForEach(p => { var result = GetCollection <T>().DeleteOne(Builders <T> .Filter.Eq("_id", p)); if (result.IsAcknowledged & result.DeletedCount == 1) { GridFS.Delete(p); } }); return true; } )); }
private GridFSFileInfo FindOneById(ObjectId id) { return(GridFS.Find(Builders <GridFSFileInfo> .Filter.Where(p => p.Id == id)).FirstOrDefault()); }