FluentStorage 8.0.21
Prefix Reserved
.NET 7.0
This package targets .NET 7.0. The package is compatible with this framework or higher.
.NET Standard 2.0
This package targets .NET Standard 2.0. The package is compatible with this framework or higher.
dotnet add package FluentStorage --version 8.0.21
NuGet\Install-Package FluentStorage -Version 8.0.21
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="FluentStorage" Version="8.0.21" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="FluentStorage" Version="8.0.21" />
<PackageReference Include="FluentStorage" />
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 FluentStorage --version 8.0.21
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
#r "nuget: FluentStorage, 8.0.21"
#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 FluentStorage@8.0.21
#: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=FluentStorage&version=8.0.21
#tool nuget:?package=FluentStorage&version=8.0.21
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
Please read the Migration Guide to help you migrate from older versions to FluentStorage 8!
FluentStorage 8.0.21
- FluentStorage
- Fix:
MoveDirectoryon local disk provider no longer throwsArgumentNullException - Fix:
MoveDirectoryon local disk provider will now throwIOExceptionwhen the destination folder exists
- Fix:
- FluentStorage.AWS
- Fix: Blank collections returned by S3 and SQS API calls should not throw
NullReferenceException - Fix:
ListObjects/ListDirectorycorrectly handle bucket paths and do not truncate the first path character (affects S3 and all S3-compatible providers)
- Fix: Blank collections returned by S3 and SQS API calls should not throw
- FluentStorage.Azure.Blobs
- Fix:
ListObjects/ListDirectorycorrectly handle bucket paths and do not truncate the first path character
- Fix:
- FluentStorage.Azure.KeyVault
- Fix:
ListObjects/ListDirectorycorrectly handle bucket paths and do not truncate the first path character
- Fix:
FluentStorage 8.0.20
- FluentStorage
- Change: Use file-scoped namespaces, remove unused using directives and remove unnecessary
thiskeyword usage - Change: Remove unnecessary async usage and add missing API docs
- Change: Use file-scoped namespaces, remove unused using directives and remove unnecessary
- FluentStorage.AWS
- Fix:
MaxResultsloop guard inS3DirectoryBrowser.ListFolderAsyncto fix timeout errors in a large S3 bucket
- Fix:
FluentStorage 8.0.19
- FluentStorage.Git
- New: Git repository provider that allows users to read/write files within a Git repo using the standard FluentStorage
IStoreinterface - New: Connection string support for Git repository provider using
gitURL prefix - New: Git API prefixed with
Git*onGitStore
- New: Git repository provider that allows users to read/write files within a Git repo using the standard FluentStorage
FluentStorage 8.0.17
- FluentStorage.Azure.Blobs
- Fix: Azure Blob paths lose their first character due to path handling logic
FluentStorage 8.0.16
- FluentStorage
- New:
OverwriteByTimestampandOverwriteByChecksummodes to overwrite files based on timestamp or checksum - New:
UploadDirectorywill return a list of all the per-file progress reports at the end, and will record objects skipped due to rules - New:
DownloadDirectorywill return a list of all the per-file progress reports at the end, and will record objects skipped due to rules - New:
SkipReasoninside eachStorageProgressto indicate why the object was skipped - New:
SkipRuleinside eachStorageProgressto indicate which rule caused the object to be rejected - Change: Rename
StorageExistsModetoStorageExiststo reduce bloat - Fix:
UploadDirectoryandDownloadDirectorylogic that caused it not to overwrite files
- New:
- FluentStorage.SFTP
- Fix:
CreateDirectorydoes not create the entire directory path
- Fix:
FluentStorage 8.0.14
- FluentStorage
- New:
GetObjectChecksumAPI to compute various types of hashes for an object across all providers - New:
StorageObjectHashobject to hold a hash value and easily compare it against any local file or stream - New:
StorageExistsMode.OverwriteIfChangedmode to only overwrite files if they have changed (length/checksum checks) - New:
UploadDirectorysupports theOverwriteIfChangedmode and only uploads files if the length/checksum mismatches - New:
DownloadDirectorysupports theOverwriteIfChangedmode and only downloads files if the length/checksum mismatches - Removed:
GetObjectMD5is removed in favour ofGetObjectChecksum
- New:
- FluentStorage.GCP
- New: Implement fast
GetObjectChecksumby usingGetObjectAsyncAPI to get MD5 object hash
- New: Implement fast
- FluentStorage.FTP
- New: Implement fast
GetObjectChecksumby using native FTP commands
- New: Implement fast
- FluentStorage.SFTP
- New: Implement fast
GetObjectChecksumby using native SSH shell commands to remotely compute an object hash. - New: Implement a powerful engine built for Windows and Unix to detects which Shell utilities are available once, then quickly use this information to compute a server-side hash of the file without needing to download it
- New: Security engine to prevent path-injection and command-injection (based on security engine from FluentFTP)
- New: Implement fast
FluentStorage 8.0.13
- FluentStorage
- New: Optimize
StoragePath.Combinewhen combining only 2 path segments (most common use case)
- New: Optimize
- FluentStorage.SFTP
- New: Optimize
SetObject&SetBytesAPIs to improve transfer performance (4x faster) - New: Optimize
UploadObject&UploadDirectoryAPIs to improve transfer performance (2x faster) - New:
BufferSizeset to a default of 128KB to improve transfer performance - New:
TransferBufferSizesetting to change upload/download buffer size - Fix:
SetObjectnow correctly handles non-seekable streams - Fix:
CreateDirectorynow creates the entire directory path instead of just the last segment - Improve:
DirectoryExistsuses only one native API call to improve performance - Improve:
UploadObjectnow uses nativeUploadFileAsyncAPI to improve transfer performance - Remove:
SetLengthOnNewStreamas it is no longer supported
- New: Optimize
FluentStorage 8.0.12
- FluentStorage
- New: Add rule-based filtering support in
DownloadDirectoryandUploadDirectoryfor all storage providers - New: Add rule engine and rules from FluentFTP:
ObjectNameRule,ObjectNameRegexRule,DirectoryNameRule,DirectoryNameRegexRule,ExtensionRule - New: Add new rule types for path checking:
FullPathRule,FullPathRegexRule - Fix: Fix all logic issues in rules based on unit test suite
- Fix: Support case-insensitive extension comparison in
ExtensionRule - Fix:
DownloadObjectensures parent directory exists and fix existance check - Fix:
DownloadDirectoryreports progress on successful transfers too - Fix:
UploadDirectoryreports progress on successful transfers too - Paths:
StoreObject: MakeFullPathinstant by computing it at time of construction rather than dynamically - Paths:
StoreObject: AddInputproperty to read the raw path given by the provider
- New: Add rule-based filtering support in
- FluentStorage.FTP
- Fix: Improve
DownloadObjectAPI to have consistant behaviour
- Fix: Improve
- FluentStorage.SFTP
- Fix: Improve
DownloadObjectAPI to have consistant behaviour
- Fix: Improve
- FluentStorage.Alibaba
- Fix: All API should use a single constructor for
StoreObject
- Fix: All API should use a single constructor for
- FluentStorage.Tests
- New: Extensive integration test suite for rule engine under
IStore.DirRulesclass - New: Extensive unit test suite for rule engine under
RuleTestsclass
- New: Extensive integration test suite for rule engine under
FluentStorage 8.0.10
- FluentStorage
- Fix:
CreateDirectorywill not throw exceptions by default, allowing it to be called on cloud stores - Fix:
DeleteDirectoryhas a default implementation for all cloud stores, to delete all objects in a virtual folder - Change:
DiskStore:DeleteObjectwill no longer delete objects in a virtual directory - Change:
MemoryStore:DeleteObjectwill no longer delete objects in a virtual directory - Fix:
MemoryStore:ObjectExistsnormalizes the input path - New:
MemoryStore: Implement all missing API:OpenRange,
- Fix: