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

dax*_*axu 6 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
            }
        }
Run Code Online (Sandbox Code Playgroud)

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

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

Gau*_*tri 8

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

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

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

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