IFileProvider Azure文件存储

时间:2017-10-23 14:40:07

标签: azure azure-storage azure-storage-files

我正在考虑与Azure文件存储实现IFileProvider接口。 我想在docs中找到的是,是否有办法将文件的整个路径发送到Azure API,如rootDirectory/sub1/sub2/example.file,或者是否应该实际映射到某个递归函数,该函数将采用路径和遍历目录结构文件存储?

只是想确保我没有错过任何东西并重新发明已经存在的东西。

[UPDATE]

我正在使用Azure Storage Client for .NET。我不想装任何东西。 我的意图是有几个IFileProviders我可以根据Environment和其他条件进行切换。

因此,例如,如果我的环境是Cloud,那么我将使用通过Azure存储客户端使用Azure文件服务的IFileProvider实现。接下来,如果我有环境MyServer,那么我将使用服务器本地文件系统。第三个选项是具有该特定实现的环境someOther

现在,对于所有这些人,IFileProvider使用root/sub1/sub2/sub3之类的路径进行操作。对于Azure文件存储,是否有一种方法可以立即发送整个路径以获取sub3信息/内容,还是应该将路径分解为单个目录并获取每个步骤的参考/内容?

我希望能解决这个问题。

1 个答案:

答案 0 :(得分:1)

  

现在,对于所有这些,IFileProvider的操作路径如˙root/ sub1 / sub2 / sub3。对于Azure文件存储,是否有一种方法可以立即将整个路径发送到getsub3`info / content,还是应该将路径分解为单个目录并获取每个步骤的参考/内容?

要访问多个子目录中的特定子目录,您可以使用GetDirectoryReference方法构建CloudFileDirectory,如下所示:

var fileshare = storageAccount.CreateCloudFileClient().GetShareReference("myshare");
var rootDir = fileshare.GetRootDirectoryReference();
var dir = rootDir.GetDirectoryReference("2017-10-24/15/52");
var items=dir.ListFilesAndDirectories();

要访问子目录下的特定文件,您可以使用GetFileReference方法返回CloudFile实例,如下所示:

var file=rootDir.GetFileReference("2017-10-24/15/52/2017-10-13-2.png");