/// <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);
            }
        }
Exemple #2
0
        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);
        }
Exemple #4
0
        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));
         }
     }
            );
 }
Exemple #9
0
 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;
     }));
 }
Exemple #11
0
        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());
 }