如果我有_full_ absolute uri,如何GetFileReference到Azure blob /文件?

时间:2017-05-18 08:44:19

标签: c# .net azure azure-sdk-.net

在我的数据库中,我对我们的azure文件有完整的绝对Uri

例如

  • https://<snip>.file.core.windows.net/share1/Brand1/Export_2017-05-11-12-54.xml
  • https://<snip>.file.core.windows.net/share1/Brand1/asdfasdfasd.xml
  • https://<snip>.file.core.windows.net/share1/Brand2/PewPew%20-%20Sample-78206580-1dd8-4de2-9b92-002bdca861a5.xml

请注意:

  • Azure文件Share名称,例如share1
  • 文件名在em中有一个或多个/。例如brand1/blah.xml

我试图查看该文件是否存在然后用它做什么(例如下载它,无论如何)。

我首先需要File Reference这个项目。我已经完成了设置 SAS等)的所有仪式。

这是我获取文件的文件引用的方式:

var cloudFile = ShareRootDirectory.GetFileReference(fileName);

如果它可以fileName = "Brand1/Export_2017-05-11-12-54.xml起作用(注意:那里没有sharehttps://....。)

否则我收到错误。

有没有办法,如果天蓝色的文件有完整的绝对uri,我可以将某些传递给我之前设置的ShreRootDirectory来获取/检查文件吗?或者我需要以另一种方式做到这一点吗?

有一些技巧吗?

注意: - 我有一个共享文件夹(用于文件) - 文件名中包含/,这给出了文件夹的错觉。

这是我拍摄的一个屏幕截图:

var tempCloudFile = new CloudFile(new Uri(fileName));

enter image description here

1 个答案:

答案 0 :(得分:3)

如果您有权访问存储凭据,则可以使用以下覆盖CloudFile来获取该文件的引用,然后对该文件执行操作。例如,我在下面获得CloudFile的参考并检查其存在。

        var cred = new StorageCredentials(accountName, accountKey);
        var file = new CloudFile(new Uri("https://<snip>.file.core.windows.net/share1/Brand1/Export_2017-05-11-12-54.xml"), cred);
        var exists = file.Exists();