LiteX.Storage.Azure
4.1.0
See the version list below for details.
dotnet add package LiteX.Storage.Azure --version 4.1.0
NuGet\Install-Package LiteX.Storage.Azure -Version 4.1.0
<PackageReference Include="LiteX.Storage.Azure" Version="4.1.0" />
paket add LiteX.Storage.Azure --version 4.1.0
#r "nuget: LiteX.Storage.Azure, 4.1.0"
// Install LiteX.Storage.Azure as a Cake Addin #addin nuget:?package=LiteX.Storage.Azure&version=4.1.0 // Install LiteX.Storage.Azure as a Cake Tool #tool nuget:?package=LiteX.Storage.Azure&version=4.1.0
LiteXStorage
Abstract interface to implement any kind of basic blob storage services (e.g. Azure, Amazon, Google, Local FileSystem) for any type of application (ASP.NET Core, .Net Standard 2.x).
Add a dependency
Nuget
Run the nuget command for installing the client as,
Install-Package LiteX.Storage.Core
Install-Package LiteX.Storage.Azure
Configuration
AppSettings
{
//LiteX Azure Storage settings
"AzureBlobConfig": {
"AzureBlobStorageConnectionString": "--- REPLACE WITH YOUR AZURE CONNECTION STRING ---",
"AzureBlobStorageContainerName": "--- REPLACE WITH YOUR AZURE CONTAINER NAME ---",
"AzureBlobStorageEndPoint": "--- REPLACE WITH YOUR AZURE END POINT ---"
}
}
Startup Configuration
public class Startup
{
public void ConfigureServices(IServiceCollection services)
{
// 1. Use default configuration from appsettings.json's 'AzureBlobConfig'
services.AddLiteXAzureBlobService();
//OR
// 2. Load configuration settings using options.
services.AddLiteXAzureBlobService(option =>
{
//option. = "";
});
//OR
// 3. Load configuration settings on your own.
// (e.g. appsettings, database, hardcoded)
var azureBlobConfig = new AzureBlobConfig();
services.AddLiteXAzureBlobService(azureBlobConfig);
}
}
Usage
Controller or Business layer
/// <summary>
/// Customer controller
/// </summary>
[Route("api/[controller]")]
public class CustomerController : Controller
{
#region Fields
private readonly IBlobService _blobService;
#endregion
#region Ctor
/// <summary>
/// Ctor
/// </summary>
/// <param name="blobService"></param>
public CustomerController(IBlobService blobService)
{
_blobService = blobService;
}
#endregion
#region Methods
/// <summary>
/// Create/Replace blob file
/// </summary>
/// <param name="file"></param>
/// <returns></returns>
public IActionResult UploadFile(IFormFile file)
{
try
{
string blobName = file.FileName;
Stream stream = file.OpenReadStream();
string contentType = file.ContentType;
BlobProperties properties = new BlobProperties { ContentType = contentType };
bool isUploaded = _blobService.UploadBlob(blobName, stream, properties);
//bool isUploaded = await _blobService.UploadBlobAsync(blobName, stream, properties);
}
catch (Exception ex)
{
return BadRequest(ex);
}
return Ok();
}
/// <summary>
/// Get blob file data (bytes or stream)
/// </summary>
/// <param name="blobName"></param>
/// <returns></returns>
public IActionResult GetBlobFile(string blobName)
{
try
{
// get blob
Stream stream = _blobService.GetBlob(blobName);
//Stream stream = await _blobService.GetBlobAsync(blobName);
}
catch (Exception ex)
{
return BadRequest(ex);
}
return Ok();
}
/// <summary>
/// Get blob url
/// </summary>
/// <param name="blobName"></param>
/// <returns></returns>
public IActionResult GetBlobUrl(string blobName)
{
try
{
string blobUrl = _blobService.GetBlobUrl(blobName);
//string blobUrl = await _blobService.GetBlobUrlAsync(blobName);
}
catch (Exception ex)
{
return BadRequest(ex);
}
return Ok();
}
/// <summary>
/// Get blob sas url
/// </summary>
/// <param name="blobName"></param>
/// <returns></returns>
public IActionResult GetBlobSasUrl(string blobName)
{
try
{
string blobUrl = _blobService.GetBlobSasUrl(blobName, DateTimeOffset.UtcNow.AddHours(2), BlobUrlAccess.Read);
//string blobUrl = await _blobService.GetBlobSasUrlAsync(blobName, DateTimeOffset.UtcNow.AddHours(2), BlobUrlAccess.Read);
}
catch (Exception ex)
{
return BadRequest(ex);
}
return Ok();
}
/// <summary>
/// Delete blob file
/// </summary>
/// <param name="blobName"></param>
/// <returns></returns>
public IActionResult DeleteBlobFile(string blobName)
{
try
{
bool isDeleted = _blobService.DeleteBlob(blobName);
//bool isDeleted = await _blobService.DeleteBlobAsync(blobName);
}
catch (Exception ex)
{
return BadRequest(ex);
}
return Ok();
}
/// <summary>
/// Get blob metadata
/// </summary>
/// <param name="blobName"></param>
/// <returns></returns>
public IActionResult GetBlobMetadata(string blobName)
{
try
{
BlobDescriptor blobDescriptor = _blobService.GetBlobDescriptor(blobName);
//BlobDescriptor blobDescriptor = await _blobService.GetBlobDescriptorAsync(blobName);
var metadata = blobDescriptor.Metadata;
}
catch (Exception ex)
{
return BadRequest(ex);
}
return Ok();
}
/// <summary>
/// Set blob metadata
/// </summary>
/// <param name="blobName"></param>
/// <returns></returns>
public IActionResult SetBlobMetadata(string blobName)
{
try
{
IDictionary<string, string> metadata = new Dictionary<string, string>();
BlobProperties properties = new BlobProperties()
{
ContentType = "",
Metadata = metadata,
ContentDisposition = "",
Security = BlobSecurity.Public
};
bool isSet = _blobService.SetBlobProperties(blobName, properties);
//bool isSet = await _blobService.SetBlobPropertiesAsync(blobName, properties);
}
catch (Exception ex)
{
return BadRequest(ex);
}
return Ok();
}
/// <summary>
/// Get blob list
/// </summary>
/// <returns></returns>
public IActionResult GetBlobs()
{
try
{
List<BlobDescriptor> blobs = _blobService.GetBlobs().ToList();
//List<BlobDescriptor> blobs = await _blobService.GetBlobsAsync().ToList();
}
catch (Exception ex)
{
return BadRequest(ex);
}
return Ok();
}
#endregion
#region Utilities
private IList<Customer> GetCustomers()
{
IList<Customer> customers = new List<Customer>();
customers.Add(new Customer() { Id = 1, Username = "ashish", Email = "toaashishpatel@outlook.com" });
return customers;
}
private Customer GetCustomerById(int id)
{
Customer customer = null;
customer = GetCustomers().ToList().FirstOrDefault(x => x.Id == id);
return customer;
}
#endregion
}
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
- LiteX.Storage.Core (>= 4.0.0)
- Microsoft.Extensions.Configuration (>= 2.0.0)
- Microsoft.Extensions.Configuration.Binder (>= 2.0.0)
- Microsoft.Extensions.DependencyInjection (>= 2.0.0)
- WindowsAzure.Storage (>= 9.2.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 |
---|---|---|
9.0.0 | 1,413 | 4/3/2022 |
8.0.0 | 886 | 1/1/2021 |
7.1.0 | 3,060 | 4/3/2020 |
7.0.0 | 1,636 | 8/4/2019 |
6.4.0 | 2,147 | 1/31/2019 |
6.3.0 | 2,126 | 11/15/2018 |
6.2.0 | 849 | 10/10/2018 |
6.1.0 | 1,565 | 8/26/2018 |
6.0.0 | 874 | 7/22/2018 |
5.0.0 | 988 | 6/27/2018 |
4.1.0 | 1,042 | 6/16/2018 |
4.0.0 | 1,004 | 6/2/2018 |
3.0.0 | 1,047 | 5/7/2018 |
2.0.0 | 1,172 | 4/25/2018 |
1.0.1 | 1,044 | 4/22/2018 |
1.0.0 | 1,150 | 4/21/2018 |
Async support.
Re-write again from scratch.
Added new methods (e.g. create/delete container, SasUrl, GetBlobDescriptor, GetBlobs, Get/Set BlobProperties).
Core logic changes.
Use data stream instead of byte array.
One default container/bucket specific.
All features tested.
Bug fixes.