SpawnDev.WebFS 1.0.0

dotnet add package SpawnDev.WebFS --version 1.0.0
                    
NuGet\Install-Package SpawnDev.WebFS -Version 1.0.0
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="SpawnDev.WebFS" Version="1.0.0" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="SpawnDev.WebFS" Version="1.0.0" />
                    
Directory.Packages.props
<PackageReference Include="SpawnDev.WebFS" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add SpawnDev.WebFS --version 1.0.0
                    
#r "nuget: SpawnDev.WebFS, 1.0.0"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package SpawnDev.WebFS@1.0.0
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=SpawnDev.WebFS&version=1.0.0
                    
Install as a Cake Addin
#tool nuget:?package=SpawnDev.WebFS&version=1.0.0
                    
Install as a Cake Tool

SpawnDev.WebFS

NuGet

SpawnDev.WebFS lets Blazor WebAssembly web apps host a file system via a domain labeled folder by connecting to the SpawnDev.WebFS.Host app running on the user's PC.

SpawnDev.WebFS.Tray

<img width="48" src="https://github.com/LostBeard/SpawnDev.WebFS/raw/refs/heads/master/SpawnDev.WebFS/wwwroot/webfs-128.png" />

The SpawnDev.WebFS.Tray app runs on the user's PC with an icon in the system tray and can optionally start with Windows. While running, the WebFS host app uses DokanNet to mount a new drive on the user's PC that can be accessed normally by any apps on the user's computer. Websites can request permission to provide a file system via a domain labeled folder on the root of the new drive.

WebFS Tray Download: SpawnDevWebFSSetup

WebFS Providers

Website file system provider links and descriptions.

lostbeard.github.io - Demo WebFS Provider

Demonstrates WebFS by providing read and write access to the browser's Origin private file system.

Use cases

  • A website that allows protected access to a remote encrypted file system.
  • Team collaboration on shared projects.
  • Browser extension that provides access to Google Photos through a folder by automating Google Photos in a browser page.
  • Access files and folders on your remote devices anywhere using normal apps.
  • Etc.

Using SpawnDev.WebFS in a Blazor WebAssembly app

WebFS tray app

The WebFS tray app is required for both development and production use. In development, it may be more useful to use the source project in this repo instead.

Blazor WebAssembly
  • Add a reference to the latest SpawnDev.WebFS Nuget package using your method of choice.

Program.cs - From demo repo

using Microsoft.AspNetCore.Components.Web;
using Microsoft.AspNetCore.Components.WebAssembly.Hosting;
using SpawnDev.BlazorJS;
using SpawnDev.WebFS;
using SpawnDev.WebFS.Demo;

var builder = WebAssemblyHostBuilder.CreateDefault(args);
builder.RootComponents.Add<App>("#app");
builder.RootComponents.Add<HeadOutlet>("head::after");

// Add SpawnDev.BlazorJS JS  interop
builder.Services.AddBlazorJSRuntime(out var JS);

// Registers WebFSProvider, the demo WebFS provider as WebFSProvider and IAsyncDokanOperations
// Registers WebFSClient which connects to the tray app when its Enabled property is set to true
builder.Services.AddWebFS<WebFSProvider>();

// Startup using BlazorJSRunAsync
await builder.Build().BlazorJSRunAsync();
  • Implement the IAsyncDokanOperations interface in your custom provider and set WebFSClient.Enabled = true when ready
    WebFSProvider.cs - From demo repo
    /// <summary>
    /// Demo WebFS filesystem provider.<br/>
    /// Provides access the the browsers Origin private file system.<br/>
    /// IBackgroundService sets this service to autostart when the Blazor WASM web app loads
    /// </summary>
    [RemoteCallable]
    public class WebFSProvider : IAsyncDokanOperations, IBackgroundService
    {
        public WebFSProvider(BlazorJSRuntime js, WebFSClient webFSClient)
        {
            JS = js;
            WebFSClient = webFSClient;
            // this demo provider uses navigator.storage to provide access to the browser's origin private file system
            using var navigator = JS.Get<Navigator>("navigator");
            StorageManager = navigator.Storage;
            // tell WebFSClient to connect to the tray app when it can
            WebFSClient.Enabled = true;
        }

WIP

If you are interested in this project, please start an issue to suggest features or areas of interest.

Product Compatible and additional computed target framework versions.
.NET net8.0 is compatible.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed.  net9.0 is compatible.  net9.0-android was computed.  net9.0-browser was computed.  net9.0-ios was computed.  net9.0-maccatalyst was computed.  net9.0-macos was computed.  net9.0-tvos was computed.  net9.0-windows was computed.  net10.0 was computed.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
1.0.0 16 11/6/2025