Search This Blog

Showing posts with label Container. Show all posts
Showing posts with label Container. Show all posts

Friday, July 1, 2022

How to download file from Azure Blob using x++ in D365 FO

Create the storage account on the azure as per below and copy the keys to connect to this storage account. 


Create a container inside this storage account named with dynamicsfocontainer. We can upload the files from our local directory. To download the files from blob container we can use the below code in the x++. Below is the runnable class that I have developed. 

You can use the exception as per your requirement and loop as well. 


using Microsoft.WindowsAzure.Storage;

using Microsoft.WindowsAzure.Storage.Blob;

 

internal final class CreateReadWriteBlobStorage

{

    /// <summary>

    /// Class entry point. The system will call this method when a designated menu

    /// is selected or when execution starts and this class is set as the startup class.

    /// </summary>

    /// <param name = "_args">The specified arguments.</param>

    public static void main(Args _args)

    {

        CloudStorageAccount  storageAccount;

        CloudBlobContainer   blobContainer;

        CloudBlobClient      blobClient;

 

        storageAccount = CloudStorageAccount::Parse("DefaultEndpointsProtocol=https;AccountName=dynamicsfinanceoperation;AccountKey=I1IFZ7bdzX61466bAxbNChJVN3PbtUgPfNH5WbXbnc8sTIXS/ffZmN0EDo+zbS+AStn3n0Pw==;EndpointSuffix=core.windows.net");

        blobClient = storageAccount.CreateCloudBlobClient();

       

        blobContainer = blobClient.GetContainerReference("dynamicsfocontainer");

 

        System.Collections.IEnumerable listEnumerable =  blobContainer.ListBlobs(null,true,0,null,null);

        System.Collections.IEnumerator listEnumerator = listEnumerable.GetEnumerator();

       

        while (listEnumerator.MoveNext())

        {

            IListBlobItem item = listEnumerator.Current;

 

            if (item is CloudBlockBlob)

            {

                CloudBlockBlob  blockBlob = item;

                System.IO.FileStream  localFile = System.IO.File::Create(@"C:\Temp\Blob\" + blockBlob.Name);

                blockBlob.DownloadToStreamAsync(localFile);

                Info(strFmt("%1",blockBlob.Name));

            }          

        }

    }

}