Search code examples
c#azureazure-blob-storageazure-files

C# code to Copy Files From Azure File Share to Azure Blob


How to copy Files from Azure File share to Azure Blob using C#?


Solution

  • Finally got it working.

    string rootFolder = "root";
    
    string mainFolder = "MainFolder";
    
    string fileshareName = "testfileshare";
    
    string containerName = "container";
    
    string connectionString = "Provide StorageConnectionString here";
    
    CloudStorageAccount storageAccount = CloudStorageAccount.Parse(connectionString);
            CloudFileClient fileClient = storageAccount.CreateCloudFileClient();
    
            // Create a new file share, if it does not already exist.
            CloudFileShare share = fileClient.GetShareReference(fileshareName);
            share.CreateIfNotExists();
    
            // Create a new file in the root directory.
    
            CloudFileDirectory rootDir = share.GetRootDirectoryReference();
    
            CloudFileDirectory sampleDir = rootDir.GetDirectoryReference(rootFolder);
    
    
            CloudBlobClient blobClient = storageAccount.CreateCloudBlobClient();
            CloudBlobContainer container = blobClient.GetContainerReference(containerName.ToLower());
            container.CreateIfNotExists();
    
            foreach (var Files in sampleDir.ListFilesAndDirectories())
            {
                char strdelim = '/';
                string path = Files.Uri.ToString();
                var arr = Files.Uri.ToString().Split(strdelim);
                string strFileName = arr[arr.Length - 1];
    
                Console.WriteLine("\n" + strFileName);
    
                CloudFile sourceFile = sampleDir.GetFileReference(strFileName);
    
                string fileSas = sourceFile.GetSharedAccessSignature(new SharedAccessFilePolicy()
                {
                    // Only read permissions are required for the source file.
                    Permissions = SharedAccessFilePermissions.Read,
                    SharedAccessExpiryTime = DateTime.UtcNow.AddHours(24)
                });
    
                Uri fileSasUri = new Uri(sourceFile.StorageUri.PrimaryUri.ToString() + fileSas);
    
                string blob = mainFolder + "\\" + strFileName;
    
                CloudBlockBlob blockBlob = container.GetBlockBlobReference(blob);
    
                blockBlob.StartCopy(fileSasUri);
    
            }