Keep in Touch!

Contenuti

C# 9 and .NET 5

Blob Storage File Attributes

Blob Storage File Attributes

La scorsa settimana ho lavorato pesantemente programmando una serie di logiche che sfruttano il Blob Storage per memorizzare ed elaborare una serie di file caricati dagli utenti tramite UI. Durante una di queste logiche avevo la necessità di accedere ai cosiddetti File Attributes e partendo da questa necessità ho scritto il seguente codice che voglio riproporvi.

FetchAttributesAsync

Il metodo GetBlobProperties sarà in grado di fornivi tutte le informazioni del file semplicemente ricevendo in ingresso i seguenti paramentri di tipo stringa

  • connectionString: la stringa di connessione al Blob Storage (potete recuperarla dal Portale Azure)
  • containerName: Nome del container in cui è presente il file
  • fileName: il percorso completo del file all’interno del container.
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
public async Task<BlobProperties> GetBlobProperties(string connectionString, string containerName, string fileName)
{
    CloudStorageAccount storageAccount = CloudStorageAccount.Parse(connectionString);
    CloudBlobClient client = storageAccount.CreateCloudBlobClient();
    CloudBlobContainer container = client.GetContainerReference(containerName);

    CloudBlockBlob blob = container.GetBlockBlobReference(fileName);
    await blob.FetchAttributesAsync();
    return blob.Properties;
}

Importante: Non dimenticate la riga con la chiamata FetchAttributesAsync per avere valorizzate le proprietà del file.

Attenzione: Il fileName NON dovrà cominciare con “/” ma direttamente col nome della prima cartella. Questo credo di averlo imparato bene dopo essere impazzito a non capirne lo scoppiamento. Ok, lo ammetto: sapevo di questa problematica, ma l’avevo dimenticata.

BlobProperties

Prima di chiudere il post, vi voglio mostrare il contenuto di BlobProperties

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
using System;

namespace Microsoft.WindowsAzure.Storage.Blob
{
    public sealed class BlobProperties
    {
        public BlobProperties();
        public BlobProperties(BlobProperties other);

        public DateTimeOffset? BlobTierLastModifiedTime { get; }
        public bool? BlobTierInferred { get; }
        public PremiumPageBlobTier? PremiumPageBlobTier { get; }
        public RehydrationStatus? RehydrationStatus { get; }
        public StandardBlobTier? StandardBlobTier { get; }
        public bool IsIncrementalCopy { get; }
        public bool IsServerEncrypted { get; }
        public int? AppendBlobCommittedBlockCount { get; }
        public long? PageBlobSequenceNumber { get; }
        public LeaseDuration LeaseDuration { get; }
        public LeaseState LeaseState { get; }
        public LeaseStatus LeaseStatus { get; }
        public BlobType BlobType { get; }
        public DateTimeOffset? LastModified { get; }
        public DateTimeOffset? Created { get; }
        public string ETag { get; }
        public string ContentType { get; set; }
        public string ContentMD5 { get; set; }
        public long Length { get; }
        public string ContentLanguage { get; set; }
        public string ContentEncoding { get; set; }
        public string ContentDisposition { get; set; }
        public string CacheControl { get; set; }
        public DateTimeOffset? DeletedTime { get; }
        public int? RemainingDaysBeforePermanentDelete { get; }
    }
}

Ora non vi resta che sbizzarirvi ad utilizzare le BlobProperties come meglio vi aggrada.

Lascia un tuo Feedback!

Hai letto l’articolo sino in fondo? Vuoi raccontare la tua esperienza? Oppure semplicemete porre un quesito? Puoi farlo tranquillamente sul mio profilo linkedin nel post Blob Storage File Attributes unendoti ai commenti gia’ presenti.