【问题标题】:Get ListBlobs() sorted by LastModifiedDate?获取按 LastModifiedDate 排序的 ListBlobs()?
【发布时间】:2023-03-17 22:29:01
【问题描述】:

我在 blob 存储中有 30000 张图像,我想按修改日期的降序获取图像。有什么方法可以在每次调用中以 1000 张图像的块的形式获取它?

这是我的代码,但这需要太多时间。基本上我可以按 LastUpdated 日期对ListBlobs() 进行排序吗?

CloudBlobContainer rootContainer = blobClient.GetContainerReference("installations");
CloudBlobDirectory dir1;
var items = rootContainer.ListBlobs(id + "/Cameras/" + camId.ToString() + "/", false);

foreach (var blob in items.OfType<CloudBlob>()
    .OrderByDescending(b => b.Properties.LastModified).Skip(1000).Take(500))
{

}

【问题讨论】:

    标签: azure blob c#-3.0 azure-storage


    【解决方案1】:

    基本上我可以按 LastUpdated 日期对 ListBlobs() 进行排序吗?

    不,您不能在 LastUpdated 上进行服务器端排序。 Blob 存储服务返回按 Blob 名称排序的数据。您需要在客户端获取完整的数据并在那里进行排序。

    其他替代方法是将 blob 的信息(如 blob 的 URL、上次修改日期等)存储在 SQL 数据库中并从那里获取列表。在那里,您可以按照自己喜欢的方式对数据进行排序。

    【讨论】:

      【解决方案2】:

      我已经按照最后修改的顺序对 blob 进行了排序,如下例所示,这是我能想到的唯一解决方案 :)

          /**
       * list the blob items in the blob container, ordered by the last modified date
       * @return
       */
      public List<FileProperties> listFiles() {
          
          Iterable<ListBlobItem> listBlobItems = rootContainer.listBlobs();
          List<FileProperties> list = new ArrayList<>();
      
          for (ListBlobItem listBlobItem : listBlobItems) {
              if (listBlobItem instanceof CloudBlob) {
                  String substring = ((CloudBlob) listBlobItem).getName();
                  FileProperties info = new FileProperties(substring, ((CloudBlob) listBlobItem).getProperties().getLastModified());
      
                  list.add(info);
              }
      
          }
      
          // to sort the listed blob items in last modified order
          list.sort(new Comparator<FileProperties>() {
              @Override
              public int compare(FileProperties o1, FileProperties o2) {
                  return new Long(o2.getLastModifiedDate().getTime()).compareTo(o1.getLastModifiedDate().getTime());
              }
          });
      
          return  list;
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-08-30
        • 2019-07-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-11-15
        • 1970-01-01
        相关资源
        最近更新 更多