Azure文件存储包括列表请求中的文件元数据

时间:2017-06-25 23:24:37

标签: c# azure azure-storage

在调用ListFilesAndDirectories(https://docs.microsoft.com/en-us/dotnet/api/microsoft.windowsazure.storage.file.cloudfiledirectory.listfilesanddirectories?view=azure-dotnet)时,有没有办法让Azure包含IListFileItem元数据?

我正在创建一个简单的备份脚本,该脚本利用文件元数据并希望脚本尽可能快地使用尽可能少的请求。因此,我不想为每个文件发出后续请求以获取元数据。

2 个答案:

答案 0 :(得分:2)

截至今天,这是不可能的。您需要为列表结果中返回的每个文件和目录单独调用以获取元数据。

Cloud​File​Directory.​List​Files​And​Directories本质上是List Directories and Files REST API调用的包装器,这个特定的操作不带一个请求参数,你可以告诉存储服务返回文件/目录元数据(你可以做这样的事情)在blob容器中列出blob时。)

答案 1 :(得分:1)

据我所知,ListFilesAndDirectories方法将调用List Directories and Files rest api。它将发送请求以列出文件和目录。但结果将不包含文件和目录元数据。

响应是这样的:

        foreach (IListFileItem item in result)
        {
            if (item is CloudFile)
            {
                var cloudFile = (CloudFile)item;
                cloudFile.FetchAttributes();
                // You can now access metadata and properties
                var rest = cloudFile.Metadata;
                //cloudFile.Properties
            }
            else if (item is CloudFileDirectory)
            {
                var cloudFileDirectory = (CloudFileDirectory)item;
                // You can now access metadata and properties
                cloudFileDirectory.FetchAttributes();
               var rest = cloudFileDirectory.Metadata;
                //cloudFileDirectory.Metadata
                //cloudFileDirectory.Properties
            }
        }

因此,如果您想获取文件和目录的matedata,唯一的方法是为每个文件发送另一个请求(调用FetchAttributes方法)以获取文件或目录的元数据。

这样的代码:

<ul class="bxslider">
    <li>list 1</li> 
    <li>list 2</li>  
</ul> 

<script>
$(document).ready(function () {  
    var slider = $('.bxslider').bxSlider({  
      captions: true
    }); 

    $('.bx-pager-link').click(function(){  
        slider.fade(); 
    }); 

}); 
</script>