将文件从 Azure 文件共享复制到 Azure Blob 的 C# 代码

标签 c# azure azure-blob-storage azure-files

如何使用 C# 将文件从 Azure 文件共享复制到 Azure Blob?

最佳答案

终于成功了。

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);

        }

关于将文件从 Azure 文件共享复制到 Azure Blob 的 C# 代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35459445/

相关文章:

c# - 具有序列 ID 的线程安全固定大小循环缓冲区

c# - 循环静态只读字段定义的奇怪行为

azure - 从 Python Notebook 使用 Markdown 调用 SQL Notebook 会导致 "Parse Exception"

asp.net-mvc - 将图像 URL 转换为 HttpPostedFileBase

c# - ListBlobs 不列出已删除的 blob

azure - Bicep 使用 URI 发布 Runbook

c# - 如何测量在 MacBook 上运行的 VirtualBox 上开发的 C# 算法的性能?

javascript - 如何将参数从 js 传递给直接事件 Url Action?

azure - 如何重命名 Azure Data Lake Storage Gen1 帐户名称?

azure - 是否可以在 azcopy 中使用正则表达式?