Skip to content

Repository files navigation

DistributedFileStorage NuGet version

Distributed file storage

Features

  • Storing metadata in the database (SQL/NoSQL)
  • Storing files in the file system
  • Deduplication of files by content
  • Distributed storage (multiple disks)

Example: Simple console app

dotnet new console --name "DfsExample"
cd DfsExample
dotnet add package DistributedFileStorage.EntityFrameworkCore
dotnet add package Microsoft.EntityFrameworkCore.SqlServer

program.cs:

usingDistributedFileStorage;usingMicrosoft.EntityFrameworkCore;usingMicrosoft.Extensions.DependencyInjection;// add services to the containervarservices=newServiceCollection().AddDfsEfc<string>(options =>{// add database provider options.Database.ContextConfigurator=(db)=>db.UseSqlServer("Data Source=(localdb)\\MSSQLLocalDB;Initial Catalog=DfsDatabase;Integrated Security=True;Persist Security Info=False;Pooling=False;MultipleActiveResultSets=False;Connect Timeout=60;Encrypt=False;TrustServerCertificate=False");// add path construction algorithm varrnd=newRandom();options.FileStorage.PathBuilder=(fileId)=>Path.GetFullPath($@"_dfs\fake_disk_{rnd.Next(1,3)}\{DateTime.Now:yyyy\\MM\\dd}\{fileId}");}).BuildServiceProvider();vardfs=services.GetRequiredService<IDistributedFileStorage<string>>();// uploadusingvaruploadFile=newMemoryStream(System.Text.Encoding.UTF8.GetBytes("test text"));varfileId=awaitdfs.Add(uploadFile,$"example.txt","my metadata");// get infovarfileInfo=awaitdfs.GetInfo(fileId);Console.WriteLine(Newtonsoft.Json.JsonConvert.SerializeObject(fileInfo));// download usingvardownloadFile=File.Create("example.txt");awaitforeach(varchunkindfs.GetContent(fileId))awaitdownloadFile.WriteAsync(chunk);

More examples...

About

.NET Distributed file storage

Topics

Resources

Stars

11 stars

Watchers

2 watching

Forks

Releases

Packages

Used by

Contributors

Languages