首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >递归上载到Azure-Files / Create子文件夹

递归上载到Azure-Files / Create子文件夹
EN

Stack Overflow用户
提问于 2019-09-08 05:19:02
回答 1查看 800关注 0票数 1

我想要将文件夹递归上传到azure-files存储中。文件结构通常有几个子文件夹。在azure-files中创建子文件夹的最佳方式是什么?

代码语言:javascript
复制
    foreach (string fullLocalFilename in System.IO.Directory.GetFiles(locationOfFolderToUpload, "*.*", System.IO.SearchOption.AllDirectories))
            {
                Console.WriteLine(fullLocalFilename);
                FileInfo localfile = new FileInfo(fullLocalFilename);
                var root = share.GetRootDirectoryReference();
                string strPfad = localfile.DirectoryName.Substring(3);
                var folder = root.GetDirectoryReference(strPfad);
                Console.WriteLine(strPfad);
                folder.CreateIfNotExists();
                CloudFile file = folder.GetFileReference(localfile.Name);
                if (file.Exists() == false) {
                    file.Create(localfile.Length);
                    file.UploadFromFile(fullLocalFilename);
                    Console.WriteLine(fullLocalFilename);
                }
}

WebException:远程服务器返回错误:找不到(404)。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-09-09 10:40:01

我建议你使用Microsoft.Azure.Storage.DataMovement,它支持将目录上传到azure,也可以创建与本地路径相同的结构。请安装最新版本的1.0.0 of Microsoft.Azure.Storage.DataMovement here。请注意,如果您已经安装了其他azure存储sdk,请先卸载它们。

例如,如果我有一个本地文件夹,如下所示:

使用以下代码:

代码语言:javascript
复制
using System;
using System.Diagnostics;
using System.Threading;
using Microsoft.Azure.Storage;
using Microsoft.Azure.Storage.Blob;
using Microsoft.Azure.Storage.DataMovement;
using Microsoft.Azure.Storage.File;

namespace AzureDataMovementTest
{
    class Program
    {
        static void Main(string[] args)
        {
            string storageConnectionString = "xxxx";
            CloudStorageAccount account = CloudStorageAccount.Parse(storageConnectionString);

            CloudFileClient fileClient = account.CreateCloudFileClient();
            CloudFileShare fileShare = fileClient.GetShareReference("t22");
            fileShare.CreateIfNotExists();

            CloudFileDirectory fileDirectory= fileShare.GetRootDirectoryReference();

            //here, I want to upload all the files and subfolders in the follow path.
            string source_path = @"F:\temp\1";

            //if I want to upload the folder 1, then use the following code to create a file directory in azure.
            CloudFileDirectory fileDirectory_2 = fileDirectory.GetDirectoryReference("1");
            fileDirectory_2.CreateIfNotExists();



            UploadDirectoryOptions directoryOptions = new UploadDirectoryOptions
            {
                Recursive = true
            };

            var task = TransferManager.UploadDirectoryAsync(source_path,fileDirectory_2,directoryOptions,null);
            task.Wait();

            Console.WriteLine("the upload is completed");
            Console.ReadLine();
        }

    }
}

代码运行完成后,导航到azure门户->文件存储:

如果你有更多的问题,请告诉我。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57837535

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档