-------------------------------CPLImplimented code------------------------------------------------- using Microsoft.WindowsAzure.Storage; Using Microsoft.WindowsAzure.Storage.Blob; using System.IO; using Microsoft.Dynamics.AX.Framework.FileManagement; public final class CPLAzureBlobStorageUtility { public static boolean upLoadFilebyStream(System.IO.Stream memoryStream, str _fileName) // { boolean ret = false; ProdParameters prodParameters = ProdParameters::find(); String255 connectionString = ProdParameters.CPLAzureBlobConnectionStr; //"DefaultEndpointsProtocol=https;AccountName=cpltest;AccountKey=JqrWct3zc10YGDUTefsi+sEj0OfsAjvpje3je4GLWhxKKfd3Iybn8Q7oqdW8F+V+O80/DLDh0Ox0+ASt6ifb4g==;EndpointSuffix=core.windows.net"; String50 containerName = ProdParameters.CPLDrumFileExportContainerName; //"geodisxml"; str errorMsg; //Validation-start if(connectionString == '') errorMsg +='Azure Bolb connection string is missing in the production control parameters\n'; if(containerName == '') errorMsg +='Azure Bolb container name is missing in the production control parameters\n'; if(_fileName == '') errorMsg +='Drum label file name is missing'; if(errorMsg !='') { throw error(errorMsg); return ret; } //connect to blob storage-start CloudStorageAccount cloudStorageAccount = CloudStorageAccount::Parse(connectionString); CloudBlobClient cloudBlobClient = cloudStorageAccount.CreateCloudBlobClient(); CloudBlobContainer cloudBlobContainer = cloudBlobClient.GetContainerReference(containerName); cloudBlobContainer.CreateIfNotExistsAsync(); //Upload File to blob container-start // Access to sub folders we can use cloudBolbDirectory // CloudBlobDirectory cloudBlobDirectory; // cloudBlobDirectory = _cloudBlobContainer.GetDirectoryReference("My Folder"); // CloudBlockBlob = cloudBlobDirectory.GetBlockBlobReference("File.Txt"); CloudBlockBlob cloudBlockBlob = cloudBlobContainer.GetBlockBlobReference(_fileName); memoryStream.Seek(0, System.IO.SeekOrigin::Begin); cloudBlockBlob.UploadFromStream(memoryStream, null, null, null); cloudBlockBlob.FetchAttributes(null,null,null); BlobProperties blobProperties = cloudBlockBlob.Properties; if(blobProperties.Length != 0) { info('File upload successful'); ret = true; } return ret; } } -------------------------------Reference blob------------------------------------------------------ using Microsoft.WindowsAzure.Storage; Using Microsoft.WindowsAzure.Storage.Blob; using System.IO; class TestAzureBlob { public static void main(Args _args) { TestAzureBlob testAzureBlob = new TestAzureBlob(); CloudBlobContainer blobContainer; // Connecting container blobContainer = testAzureBlob.connectToAzureBlob(); // Get's the file List testAzureBlob.getFilesList(blobContainer);// Way 1 testAzureBlob.readTheFiles(blobContainer);// Way 2 // Read the data in file testAzureBlob.readFileValue(blobContainer); // upload the file testAzureBlob.UploadFileToBlob(blobContainer); // move the file testAzureBlob.moveTheFileFromOneFolderToAnotherFolder(blobContainer); // delete the file testAzureBlob.deleteFileFromFolder(blobContainer); } } // Connect to Blob: public CloudBlobContainer connectToAzureBlob() { CloudBlobClient cloudBlobClient; CloudBlobContainer cloudBlobContainer; CloudStorageAccount cloudStorageAccount; cloudStorageAccount = CloudStorageAccount::Parse("Azure Blob Connection String"); // Example : // ("DefaultEndpointsProtocol = https; // AccountName = 'AccountName';AccountKey = 'AccountKey';EndpointSuffix=core.windows.net"); cloudBlobClient = cloudStorageAccount.CreateCloudBlobClient(); cloudBlobContainer = cloudBlobClient.GetContainerReference("mycontainer"); Info(cloudBlobContainer.Name); return cloudBlobContainer; } // Get the files List: // Way 1: public void getFilesList(CloudBlobContainer _cloudBlobContainer) { // Directory of blob container CloudBlobDirectory cloudBlobDirectory; container fileCon; // Folder Path cloudBlobDirectory = _cloudBlobContainer.GetDirectoryReference("My Folder"); System.Collections.IEnumerable lstEnumarable = cloudBlobDirectory.ListBlobs(false, 0, null, null); System.Collections.IEnumerator lstEnumarator = lstEnumarable.GetEnumerator(); List filenames = new List(Types::String); while(lstEnumarator.MoveNext()) { IListBlobItem item = lstEnumarator.Current; if (item is CloudBlockBlob) { CloudBlockBlob blob = item; blob.FetchAttributes(null, null, null); fileCon = str2con(blob.name, "/"); filenames.addStart(conPeek(filecon, conLen(filecon))); info(strFmt("File : %1", conPeek(filecon, conLen(filecon)))); } } } // Way 2: public void readTheFiles(CloudBlobContainer _cloudBlobContainer) { System.Collections.IEnumerable lstEnumarable = _cloudBlobContainer.ListBlobs(null, false, 0, null, null); System.Collections.IEnumerator lstEnumarator = lstEnumarable.GetEnumerator(); List filenames = new List(Types::String); while (lstEnumarator.MoveNext()) { IListBlobItem item = lstEnumarator.Current; if (item is CloudBlockBlob) { CloudBlockBlob blob = item; System.IO.StreamReader reader = new System.IO.StreamReader(blob.OpenRead(null, null, null)); Info(reader.ReadToEnd()); } } } // Read the file content: public void readFileValue(CloudBlobContainer _cloudBlobContainer) { CloudBlobDirectory cloudBlobDirectory = _cloudBlobContainer.GetDirectoryReference("My Folder"); CloudBlockBlob blob = cloudBlobDirectory.GetBlockBlobReference("File"); System.IO.Stream memory = blob.openRead(null, null, null); // Read the content System.IO.StreamReader streamReader = new System.IO.StreamReader(memory); // Read each line str strRecord = streamReader.ReadLine(); // while (!System.String::IsNullOrEmpty(strRecord)) { try { container conRecord = str2con_RU(strRecord, ','); info(conPeek(conRecord, 1)); info(conPeek(conRecord, 2)); strRecord = streamReader.ReadLine(); } catch { throw error("Message"); } } } // Upload the file: public void UploadFileToBlob(CloudBlobContainer _cloudBlobContainer) { CloudBlobDirectory cloudBlobDirectory; CloudBlockBlob CloudBlockBlob; System.Byte[] reportBytes = new System.Byte[0](); // File path cloudBlobDirectory = _cloudBlobContainer.GetDirectoryReference("My Folder"); CloudBlockBlob = cloudBlobDirectory.GetBlockBlobReference("File.Txt"); // ---------------- or ---------------- CloudBlockBlob = _cloudBlobContainer.GetBlockBlobReference("File.Txt"); // Encode System.Text.ASCIIEncoding enc = new System.Text.ASCIIEncoding(); reportBytes = enc.GetBytes("YOUR XML STRING/TEXT or Data in file"); System.IO.MemoryStream stream = new System.IO.MemoryStream(reportBytes); // upload stream CloudBlockBlob.UploadFromStream(stream, null, null, null); } // Move the file: public void moveTheFileFromOneFolderToAnotherFolder(CloudBlobContainer _cloudBlobContainer) { CloudBlobDirectory sourceCloudBlobDirectory; CloudBlobDirectory destinationCloudBlobDirectory; CloudBlockBlob sourceCloudBlockBlob; CloudBlockBlob destinationCloudBlockBlob; sourceCloudBlobDirectory = _cloudBlobContainer.GetDirectoryReference("My Folder"); destinationCloudBlobDirectory = _cloudBlobContainer.GetDirectoryReference("My Folder 2"); sourceCloudBlockBlob = sourceCloudBlobDirectory.GetBlockBlobReference("File1.Txt"); destinationCloudBlockBlob = destinationCloudBlobDirectory.GetBlockBlobReference("File1.Txt"); // Upload the file to destination destinationCloudBlockBlob.UploadFromStream(sourceCloudBlockBlob.OpenRead(null, null, null), null, null, null); } Delete the file: public void deleteFileFromFolder(CloudBlobContainer _cloudBlobContainer) { CloudBlobDirectory sourceCloudBlobDirectory; CloudBlockBlob sourceCloudBlockBlob; sourceCloudBlobDirectory = _cloudBlobContainer.GetDirectoryReference("My Folder"); sourceCloudBlockBlob = sourceCloudBlobDirectory.GetBlockBlobReference("File2.Txt"); // Delete file sourceCloudBlockBlob.delete(0, null, null, null); }