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 |
---|---|
.NET | net5.0 net5.0-windows net6.0 net6.0-android net6.0-ios net6.0-maccatalyst net6.0-macos net6.0-tvos net6.0-windows net7.0 net7.0-android net7.0-ios net7.0-maccatalyst net7.0-macos net7.0-tvos net7.0-windows |
.NET Core | netcoreapp2.0 netcoreapp2.1 netcoreapp2.2 netcoreapp3.0 netcoreapp3.1 |
.NET Standard | netstandard2.0 netstandard2.1 |
.NET Framework | net461 net462 net463 net47 net471 net472 net48 net481 |
MonoAndroid | monoandroid |
MonoMac | monomac |
MonoTouch | monotouch |
Tizen | tizen40 tizen60 |
Xamarin.iOS | xamarinios |
Xamarin.Mac | xamarinmac |
Xamarin.TVOS | xamarintvos |
Xamarin.WatchOS | xamarinwatchos |
-
.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 | 604 | 4/3/2022 |
8.0.0 | 741 | 1/1/2021 |
7.1.0 | 2,178 | 4/3/2020 |
7.0.0 | 1,451 | 8/4/2019 |
6.4.0 | 1,986 | 1/31/2019 |
6.3.0 | 1,953 | 11/15/2018 |
6.2.0 | 696 | 10/10/2018 |
6.1.0 | 1,391 | 8/26/2018 |
6.0.0 | 742 | 7/22/2018 |
5.0.0 | 809 | 6/27/2018 |
4.1.0 | 875 | 6/16/2018 |
4.0.0 | 827 | 6/2/2018 |
3.0.0 | 885 | 5/7/2018 |
2.0.0 | 996 | 4/25/2018 |
1.0.1 | 901 | 4/22/2018 |
1.0.0 | 1,007 | 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.