public async Task UploadAsync(string fileName, Stream content) { await connection.Start(); var template = new OperationsTemplate(connection); var hash = GetFileNameHash(fileName); FileHandleStatus result; var fileRecord = await dbContext.Files.Where(i => i.FileName == hash).FirstOrDefaultAsync(); var length = content.Length; if (fileRecord != null) { if (await template.CheckFileExists(fileRecord.FileId)) { result = await template.UpdateFileByStream(fileRecord.FileId, hash, content); } else { result = await template.SaveFileByStream(hash, content); } fileRecord.ContentType = string.IsNullOrEmpty(result.ContentType) ? "application/octet-stream" : result.ContentType; fileRecord.FileSize = length; fileRecord.LastModified = DateTime.Now; fileRecord.FileName = hash; fileRecord.OriginalFileName = fileName; dbContext.Files.Update(fileRecord); } else { result = await template.SaveFileByStream(hash, content); await dbContext.Files.AddAsync(new FileRecord { ContentType = string.IsNullOrEmpty(result.ContentType) ? "application/octet-stream" : result.ContentType, FileSize = length, LastModified = DateTime.Now, FileName = hash, FileId = result.FileId, OriginalFileName = fileName }); } }
public void OneTimeSetUp() { Manager = new MasterConnection("localhost") { EnableLookupVolumeCache = true }; Manager.Start().GetAwaiter().GetResult(); Connection = Manager.GetConnection(); MasterWrapper = new MasterWrapper(Manager.GetConnection()); Template = new OperationsTemplate(Manager); VolumeWrapper = new VolumeWrapper(Manager.GetConnection()); }