如何确定Azure Blob是否与当前文件(C#/.Net核心)不同?

如何确定Azure Blob是否与当前文件(C#/.Net核心)不同?,c#,azure,file,.net-core,azure-storage-blobs,C#,Azure,File,.net Core,Azure Storage Blobs,如果要覆盖的Blob(Blob文件)与当前文件(正在上载的文件)不同,我只想将文件上载到Azure Blob存储 是否有人对使用C#/.Net Core的此功能有任何建议?根据您可以对当前文件执行的操作,有几种方法可以实现此功能 最简单的方法就是直接上传,而不用担心它是否会改变。如果它是相同的,它将保留,如果不是,它将被替换为新版本 根据你的问题,这可能不是你的选择。下一步要检查的是。您可以让Blob store使用默认值,也可以在上载Blob时覆盖它们 您可以在门户中查看它们,它们的外观如下:

如果要覆盖的Blob(Blob文件)与当前文件(正在上载的文件)不同,我只想将文件上载到Azure Blob存储


是否有人对使用C#/.Net Core的此功能有任何建议?

根据您可以对当前文件执行的操作,有几种方法可以实现此功能

  • 最简单的方法就是直接上传,而不用担心它是否会改变。如果它是相同的,它将保留,如果不是,它将被替换为新版本
  • 根据你的问题,这可能不是你的选择。下一步要检查的是。您可以让Blob store使用默认值,也可以在上载Blob时覆盖它们

    您可以在门户中查看它们,它们的外观如下:

    LAST MODIFIED   11/20/2020, 1:28:22 PM
    CREATION TIME   7/31/2019, 11:44:55 AM
    VERSION ID  -
    TYPE    Block blob
    SIZE    64 B
    ACCESS TIER N/A
    ACCESS TIER LAST MODIFIED   N/A
    SERVER ENCRYPTED    true
    ETAG    0x8D88D820FE0B5E4
    CONTENT-TYPE    application/octet-stream
    CONTENT-MD5 vfS7mlI8PCeeG2yXyUQ25A==
    LEASE STATUS    Unlocked
    LEASE STATE Available
    
    要在C#中获取它们,请运行
    BlobProperties properties=wait blob.GetPropertiesAsync()

  • 如果新文件是现有文件+编辑,则LastModified属性可能足以说明它们是否不同

  • 现有文件和新文件的MD5哈希也是比较好的选择。哈希不是严格唯一的,但它们通常是唯一的,足以判断文件是否已更改

  • 如果您可以控制blob的创建和更新,还可以选择在blob上设置自定义属性。这将允许您在blob上设置一些可以跟踪的内容,以查看内容是否已更改。相同的
    GetPropertiesAsync()
    方法检索元数据字典,并通过创建
    dictionary
    并将其传递给
    blob.SetMetadataAsync(元数据)来设置它

  • 绝对最坏的情况是下载现有blob并对两个文档进行比较。除非有什么原因我必须这样做,如果2-4对我来说不起作用,我会选择第一个选项,并且只把它作为最后的手段