我正在考虑与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
信息/内容,还是应该将路径分解为单个目录并获取每个步骤的参考/内容?
我希望能解决这个问题。
答案 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");