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

本文关键字:文件属性 创建 数据 审计跟踪 存储 blob 检索 azure | 更新日期: 2023-09-27 18:20:26

我正在尝试创建一个解决方案,允许我的客户将他们的文件存储在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中的现有文件,现有元数据会丢失吗?

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

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

如果您想将创建的日期存储为元数据,这是可行的,但请记住,更新blob时元数据将被覆盖,除非您通过在更新blob之前提取元数据并将其与blob更新操作一起保存来手动保留元数据。

更好的方法是将Azure表存储与blob存储一起使用。在这种方法中,当创建blob时,您可以将条目写入Azure表存储。此外,当blob更新时,您会在Azure表存储中创建另一个条目。这就是你将能够建立一个审计跟踪。

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