如何在c#中检索azure blob存储文件属性,如创建数据和审计跟踪

时间:2015-11-04 09:52:48

标签: c# azure azure-storage-blobs

我正在尝试创建一个解决方案,允许我的客户将他们的文件存储在azure blob存储中。

当我这样做时:

foreach(var blob in list.OfType<CloudBlockBlob>())
        {
            blob.FetchAttributes();
            var file = new FileViewModel()
            {
                 Name = blob.Name,
                  Modified= blob.Properties.LastModified,
                  Size = blob.Properties.Length,
                   Created= xxx
            }
        }

看起来没有创建日期属性,只是lastModified。这是否意味着我必须自己将创建日期放入元数据属性?

我对Azure blob存储很陌生,需要生成审计报告(例如,在创建,修改和访问文件时),是否需要将所有信息放入我的数据库或文件的元数据中?如果客户覆盖存储在blob中的现​​有文件,现有元数据是否会丢失?

1 个答案:

答案 0 :(得分:7)

你的观察结果是正确的。没有属性可以告诉你什么时候创建blob。它只有一个属性,可以告诉您上次修改blob的时间。

如果您想将创建的日期存储为元数据,那么请注意,请记住元数据将在更新blob时被覆盖,除非您通过在更新blob之前获取元数据并手动保存元数据并将其与blob更新一起保存操作

更好的方法是使用Azure表存储以及blob存储。在此方法中,创建blob时,您将在Azure表存储中写入一个条目。此外,当blob更新时,您将再次进入Azure表存储。这是您将能够构建审计跟踪。

如果您对保留blob的历史感兴趣(例如,用户上传了一个文本文件,然后上传了另一个文本文件,并且您想跟踪这两个文本文件内容),那么您可以做的就是blob在更新之前的快照。它将做的是创建现有blob的只读副本。创建快照时,该过程会返回一个日期/时间值,您可以将其与更新的条目存储在表存储中。