mirror of https://github.com/abpframework/abp.git
1 changed files with 67 additions and 1 deletions
@ -1,3 +1,69 @@ |
|||||
# BLOB Storing Azure Provider |
# BLOB Storing Azure Provider |
||||
|
|
||||
This feature will be available with v3.0! |
BLOB Storing Azure Provider can store BLOBs in [Azure Blob storage](https://azure.microsoft.com/en-us/services/storage/blobs/). |
||||
|
|
||||
|
> Read the [BLOB Storing document](Blob-Storing.md) to understand how to use the BLOB storing system. This document only covers how to configure containers to use a database as the storage provider. |
||||
|
|
||||
|
## Installation |
||||
|
|
||||
|
You can use dotnet cli to install [the package](https://www.nuget.org/packages/Volo.Abp.BlobStoring.Azure). |
||||
|
|
||||
|
````bash |
||||
|
dotnet add package Volo.Abp.BlobStoring.Azure |
||||
|
```` |
||||
|
|
||||
|
After installation, add `DepenedsOn` attribute of the `AbpBlobStoringAzureModule` module to your [module](Module-Development-Basics.md). |
||||
|
|
||||
|
Whenever you add a NuGet package to a project, also add the module class dependency. |
||||
|
|
||||
|
### Configuring the Containers |
||||
|
|
||||
|
Configuration is done in the `ConfigureServices` method of your [module](Module-Development-Basics.md) class, as explained in the [BLOB Storing document](Blob-Storing.md). |
||||
|
|
||||
|
**Example: Configure to use the azure storage provider by default** |
||||
|
|
||||
|
````csharp |
||||
|
Configure<AbpBlobStoringOptions>(options => |
||||
|
{ |
||||
|
options.Containerscontainer.UseAzure(azure => |
||||
|
{ |
||||
|
azure.ConnectionString = "your azure connection string"; |
||||
|
azure.ContainerName = "your azure container name"; |
||||
|
azure.CreateContainerIfNotExists = false; |
||||
|
}); |
||||
|
}); |
||||
|
```` |
||||
|
|
||||
|
> See the [BLOB Storing document](Blob-Storing.md) to learn how to configure this provider for a specific container. |
||||
|
|
||||
|
## Options |
||||
|
|
||||
|
* **ConnectionString** (string): A connection string includes the authorization information required for your application to access data in an Azure Storage account at runtime using Shared Key authorization. Please refer to Azure documentation: https://docs.microsoft.com/en-us/azure/storage/common/storage-configure-connection-string |
||||
|
|
||||
|
* **ContainerName** (string): You can specify the container name in azure. If it is not specified, the `ContainerName` of the `BlobProviderArgs` will be used. However, please note that Azure has some rules for naming containers. A container name must be a valid DNS name, conforming to the [following naming rules](https://docs.microsoft.com/en-us/rest/api/storageservices/naming-and-referencing-containers--blobs--and-metadata#container-names). |
||||
|
|
||||
|
* Container-names rules: |
||||
|
- Container names must start or end with a letter or number, and can contain only letters, numbers, and the dash (-) character. |
||||
|
- Every dash (-) character must be immediately preceded and followed by a letter or number; consecutive dashes are not permitted in container names. |
||||
|
- All letters in a container name must be lowercase. |
||||
|
- Container names must be from 3 through 63 characters long. |
||||
|
|
||||
|
* **CreateContainerIfNotExists** (bool): Default value is `false`, If a container does not exist in azure, `AzureBlobProvider` will try to create it. Please refer to the naming rules mentioned above. |
||||
|
|
||||
|
|
||||
|
## Azure Blob Name Calculator |
||||
|
|
||||
|
Azure Blob Provider organizes BLOB name and implements some conventions. The full name of a BLOB is determined by the following rules by default: |
||||
|
|
||||
|
* Appends `host` string if [current tenant](Multi-Tenancy.md) is `null` (or multi-tenancy is disabled for the container - see the [BLOB Storing document](Blob-Storing.md) to learn how to disable multi-tenancy for a container). |
||||
|
* Appends `tenants/<tenant-id>` string if current tenant is not `null`. |
||||
|
|
||||
|
```csharp |
||||
|
var blobName = CurrentTenant.Id == null |
||||
|
? $"host/{args.BlobName}" |
||||
|
: $"tenants/{CurrentTenant.Id.Value.ToString("D")}/{args.BlobName}"; |
||||
|
``` |
||||
|
|
||||
|
### Other Services |
||||
|
|
||||
|
* `AzureBlobProvider` is the main service that implements the Azure BLOB storage provider, if you want to override/replace it via [dependency injection](Dependency-Injection.md) (don't replace `IBlobProvider` interface, but replace `AzureBlobProvider` class). |
||||
Loading…
Reference in new issue