CloudBlockBlob UploadFromStreamAsync: Upload File BlobStorage

UploadFromStreamAsync è un metodo esposto da CloudBlockBlob e grazie ad esso è possibile caricare i propri file su Azure Blob Storage. Per poterlo usare nel nostro codice sorgente dobbiamo aggiungere il seguente namespace alla nostra classe:

Microsoft.Azure.Storage.Blob

ed una volta inserito il gioco è fatto. Basteranno pochissime righe di codice per ottenere il risultato desiderato.

CloudBlockBlob UploadFromStreamAsync

Ecco di seguito le pochissime righe necessarie per potere raggiungere il risultato desiderato ovvero il portare dei file su Azure Blob Storage CloudBlockBlob UploadFromStreamAsync (cs)

 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
37
38
39
40

using Microsoft.Azure.Storage;
using Microsoft.Azure.Storage.Blob;
using System.IO;
using System.Threading.Tasks;

namespace DEVAndreaCarrattaIT
{
    public class FileToBlobStorage
    {


        public FileToBlobStorage()
        {
        }

        public async Task SendFileToBlobStorage(string storageConnection, string fileToUpload, string containerName)
        {

            var cloudStorageAccount = CloudStorageAccount.Parse(storageConnection);

            var cloudBlobClient = cloudStorageAccount.CreateCloudBlobClient();

            var cloudBlobContainer = cloudBlobClient.GetContainerReference(containerName);
            await cloudBlobContainer.CreateIfNotExistsAsync();

            FileInfo fileInfo = new FileInfo(fileToUpload);

            CloudBlockBlob cloudBlockBlob = cloudBlobContainer.GetBlockBlobReference(fileInfo.Name);

            var fileToUploadStream = new FileStream(fileToUpload, FileMode.Open, FileAccess.Read);

            await cloudBlockBlob.UploadFromStreamAsync(fileToUploadStream);
        }

    }
}



La domanda che potrebbe giungere in questo momento è: come utilizzo la classe appena scritta? Basta davvero poco ed ecco l’esempio: SendFileToBlobStorage (cs)

1
2
3
4
5
6
7
8

            FileToBlobStorage fileToBlobStorage = new FileToBlobStorage();
            fileToBlobStorage.SendFileToBlobStorage(
                "DefaultEndpointsProtocol=https;AccountName=XXX;AccountKey=YYYYYY;EndpointSuffix=core.windows.net",
                @"C:\Test\cold-colors-forest-688660.jpg",
                "DEVAndreaCarrattaITLabContainer"
            ).Wait();

Pensavate fosse più complesso? Onestamente la prima volta che ho dovuto farlo avevo la stessa preoccupazione. Ora invece sono tranquillo sapendo che non si tratta di nulla di complesso.

Articoli con argomento CloudStorageAccount * MSDN: CloudBlockBlob.UploadFromStreamAsync Method