【问题标题】:IFileProvider Azure File storageIFileProvider Azure 文件存储
【发布时间】:2017-10-23 14:40:06
【问题描述】:

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

只是想确保我没有遗漏任何东西并为已经存在的东西重新发明轮子。

[更新]

我正在使用适用于 .NET 的 Azure 存储客户端。我不想安装任何东西。 我的意图是有几个IFileProviders,我可以根据Environment和其他条件进行切换。

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

现在,对于所有这些,IFileProvider 使用类似root/sub1/sub2/sub3 的路径运行。对于 Azure 文件存储,有没有办法一次发送整个路径以获取 sub3 信息/内容,还是应该将路径分解为单独的目录并获取每个步骤的参考/内容?

我希望这能解决问题。

【问题讨论】:

  • AFAIK,您可以mount 您的文件共享并像本地文件系统一样访问它。此外,您可以利用存储客户端库来访问您的文件存储,更多详细信息可以参考tutorial。我无法正确理解您的要求,您能否更新您的问题,提供有关您正在处理的功能或场景的更多详细信息?
  • @BruceChen 感谢您的评论。我已经更新了问题。

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


【解决方案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");

【讨论】:

  • 嗯...我很确定我已经尝试过了,但它没有用,但因为感觉就像你知道你在说什么,我会再试一次并仔细检查。如果它也不存在,它应该适用于创建吗?
  • 在我看来,创建子文件夹/文件时需要确保父文件夹存在。
  • 我测试了创建子文件夹/文件,如果父文件夹不存在会报404错误。
  • 澄清一下,父文件夹是指我们调用 getreference&create 方法的那个文件夹,对吧?
  • 是的,你是对的。如果要在特定文件夹下添加子文件夹或文件,则需要确保特定文件夹存在。
猜你喜欢
  • 2015-06-27
  • 2017-08-18
  • 2017-11-22
  • 2011-09-10
  • 1970-01-01
  • 2014-12-03
  • 2012-05-20
  • 1970-01-01
  • 2017-02-27
相关资源
最近更新 更多