GoogleCloudStorageFileProvider 1.0.0-beta1
See the version list below for details.
dotnet add package GoogleCloudStorageFileProvider --version 1.0.0-beta1
NuGet\Install-Package GoogleCloudStorageFileProvider -Version 1.0.0-beta1
<PackageReference Include="GoogleCloudStorageFileProvider" Version="1.0.0-beta1" />
paket add GoogleCloudStorageFileProvider --version 1.0.0-beta1
#r "nuget: GoogleCloudStorageFileProvider, 1.0.0-beta1"
// Install GoogleCloudStorageFileProvider as a Cake Addin #addin nuget:?package=GoogleCloudStorageFileProvider&version=1.0.0-beta1&prerelease // Install GoogleCloudStorageFileProvider as a Cake Tool #tool nuget:?package=GoogleCloudStorageFileProvider&version=1.0.0-beta1&prerelease
GoogleCloudStorageFileProvider
Google Cloud Storage file provider (IFileProvider
) for ASP.NET Core.
Installation
Install-Package GoogleCloudStorageFileProvider
Usage
Configure access to your Google Storage bucket via json credential file.
Below is the usage example for both flows - where access to files from Storage bucket is enabled on the /files
route (including directory browsing in the browser).
Progarm.cs
using GoogleCloudStorageFileProvider;
using Microsoft.Extensions.FileProviders;
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddSingleton<IFileProvider>(sp =>
{
var cloudStorageOptions = builder.Configuration.GetSection("GoogleCloudStorageOptions").Get<CloudStorageOptions>();
return new CloudStorageFileProvider(cloudStorageOptions);
});
var app = builder.Build();
var cloudStorageFileProvider = app.Services.GetRequiredService<IFileProvider>();
app.UseStaticFiles(new StaticFileOptions()
{
FileProvider = cloudStorageFileProvider,
RequestPath = "/files"
});
app.UseDirectoryBrowser(new DirectoryBrowserOptions
{
FileProvider = cloudStorageFileProvider,
RequestPath = "/files"
});
app.MapGet("/", () => "Hello World!");
app.Run();
We can optimize performance by caching files as below
app.UseStaticFiles(new StaticFileOptions()
{
FileProvider = cloudStorageFileProvider,
RequestPath = "/files",
OnPrepareResponse = ctx =>
{
var cacheMaxAgeOneWeek = (60 * 60 * 24 * 7).ToString();
ctx.Context.Response.Headers.Append(
"Cache-Control", $"public, max-age={cacheMaxAgeOneWeek}");
}
});
Current limitations
The watch functionality of the file provider is currently not supported.
Credits
This project is based on the work done in Strathweb.AspNetCore.AzureBlobFileProvider.
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net5.0 was computed. net5.0-windows was computed. net6.0 was computed. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 was computed. 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. |
.NET Core | netcoreapp2.0 was computed. netcoreapp2.1 was computed. netcoreapp2.2 was computed. netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
.NET Standard | netstandard2.0 is compatible. netstandard2.1 was computed. |
.NET Framework | net461 was computed. net462 was computed. net463 was computed. net47 was computed. net471 was computed. net472 was computed. net48 was computed. net481 was computed. |
MonoAndroid | monoandroid was computed. |
MonoMac | monomac was computed. |
MonoTouch | monotouch was computed. |
Tizen | tizen40 was computed. tizen60 was computed. |
Xamarin.iOS | xamarinios was computed. |
Xamarin.Mac | xamarinmac was computed. |
Xamarin.TVOS | xamarintvos was computed. |
Xamarin.WatchOS | xamarinwatchos was computed. |
-
.NETStandard 2.0
- Google.Cloud.Storage.V1 (>= 4.10.0)
- Microsoft.Extensions.FileProviders.Abstractions (>= 8.0.0)
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.1 | 89 | 9/25/2024 |
1.0.0 | 90 | 8/29/2024 |
1.0.0-beta1 | 80 | 8/27/2024 |