private async Task <GridFSFileInfo> GetFileInfoAsync(string fileName) { var filter = Builders <GridFSFileInfo> .Filter.Eq(x => x.Filename, fileName); var fileInfo = await GridFsBucket.Find(filter).FirstOrDefaultAsync(); return(fileInfo); }
public async Task DeleteAsync(ObjectId id) { if (await AnyAsync(id)) { await GridFsBucket.DeleteAsync(id); } cdnService.DeleteMongoFileData(id.ToString()); }
public async Task <string> UploadAsync(IFormFile file) { var options = new GridFSUploadOptions { Metadata = new BsonDocument("contentType", file.ContentType) }; using (var reader = new StreamReader((Stream)file.OpenReadStream())) { var stream = reader.BaseStream; var fileId = await GridFsBucket.UploadFromStreamAsync(file.FileName, stream, options); return(fileId.ToString()); } }
public IEnumerable <MongoItemVM> GetAllFiles(int skip, int take) { var options = new GridFSFindOptions { Limit = take, Skip = skip, }; var stream = GridFsBucket .Find(new BsonDocumentFilterDefinition <GridFSFileInfo <ObjectId> >(new BsonDocument()), options) .ToList() .Select(s => new MongoItemVM { Id = s.Id, Filename = s.Filename, MetaData = s.Metadata, Length = s.Length + "", UploadDateTime = s.UploadDateTime, }).ToList(); return(stream); }
public async Task <string> UploadAsync(CdnUploadRequest file) { Dictionary <string, object> metadata = new Dictionary <string, object>(); metadata.Add("contentType", file.ContentType); metadata.Add("sourceType", file.SourceType); metadata.Add("sourceId", file.SourceId); metadata.Add("title", file.Title); var options = new GridFSUploadOptions { Metadata = new BsonDocument(metadata) }; file.FileContent = Convert.FromBase64String(file.FileContentBase64); var mongoFileId = (await GridFsBucket.UploadFromBytesAsync(file.FileName, file.FileContent, options)).ToString(); if (!string.IsNullOrEmpty(mongoFileId)) { cdnService.SaveMongoFileData(file, mongoFileId); } return(mongoFileId); }
public IEnumerable <MongoItemVM> GetAllFilesByContentType(string contentType, int skip, int take) { var filter = Builders <GridFSFileInfo> .Filter .Eq(info => info.Metadata, new BsonDocument(new BsonElement("contentType", contentType))); var options = new GridFSFindOptions { Limit = take, Skip = skip, }; var stream = GridFsBucket.Find(filter, options) .ToList() .Select(s => new MongoItemVM { Id = s.Id, Filename = s.Filename, MetaData = s.Metadata, Length = s.Length + "", UploadDateTime = s.UploadDateTime, }).ToList(); return(stream); }
public async Task <GridFSDownloadStream <ObjectId> > DownloadAsync(string fileName) { return(await GridFsBucket.OpenDownloadStreamByNameAsync(fileName)); }
public async Task <GridFSDownloadStream <ObjectId> > DownloadAsync(ObjectId id) { return(await GridFsBucket.OpenDownloadStreamAsync(id)); }
public Task <bool> AnyAsync(string fileName) { var filter = Builders <GridFSFileInfo> .Filter.Where(x => x.Filename == fileName); return(GridFsBucket.Find(filter).AnyAsync()); }
public async Task <bool> AnyAsync(ObjectId id) { var filter = Builders <GridFSFileInfo> .Filter.Eq("_id", id); return(await GridFsBucket.Find(filter).AnyAsync()); }
public async Task DeleteAsync(ObjectId id) { await GridFsBucket.DeleteAsync(id); }
public byte[] GetFile(ObjectId id) { return(GridFsBucket.DownloadAsBytes(id)); }