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

标签 c# azure azure-blob-storage

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

最佳答案

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

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

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

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

关于c# - 如何在 C# 中检索 azure blob 存储文件属性,例如创建数据和审核跟踪,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33518637/

相关文章:

python - Azure Python 下载存储 blob 返回 'The condition specified using HTTP conditional header(s) is not met.'

azure - Azure 中的磁盘大小较小且 IOPS 较高

Azure:Frontdoor 和存储帐户在 QueryParameterName `comp` 上出现 InvalidQueryParameterValue 错误

c# - 如何反序列化已更改类型的旧数据?

c# - 使用 NetworkStream.WriteAsync 检测错误

c# - POP-Before-SMTP

Azure.Security.KeyVault.Secrets 中的 Azure.RequestFailedException

缺少 .NET Core 2.0 和 Azure Web Jobs 3.0 的 Azure 服务总线触发器配置

azure - Score.py 用于图像的 AzureML

c# - 要求 Entity Framework 中共享公共(public)属性值的项目具有唯一值