【问题标题】:Is it possible to change the index of an item in a list in AWS s3 bucket?是否可以更改 AWS s3 存储桶中列表中项目的索引?
【发布时间】:2022-11-01 20:13:19
【问题描述】:

我在 aws s3 中使用存储桶来存储轮播的图像,客户需要能够修改显示图像的顺序。是否有任何方法可以修改此列表的索引?

我打算将当前列表转换为拖放列表,用户可以在其中通过拖动来修改轮播图像的显示顺序。当图像占据新位置时,触发在 s3 存储桶中进行相应更改的方法。

关于我如何上传和列出图像:我使用“AWS.S3.ManagedUpload”上传方法将图像存储在 s3 中;列出我使用“s3.listObjects”。当我列出图像时,列表的顺序始终是从最旧到最新的图像。我希望能够动态更改这种顺序。我研究了其他 s3 方法,但没有找到任何可以让我“排序”存储桶的方法。

编辑:我忘了提一个非常重要的细节:我有两个平台,一个是面向最终用户的(显示轮播的地方),另一个是管理仪表板,想法是 Adm 可以更改显示图像的顺序在最终用户的仪表板上。

【问题讨论】:

  • 你在哪里存储索引?索引到底是什么?只是 JavaScript 代码中的一个列表?非常不清楚您如何在 S3 存储桶中存储图像索引。 S3 存储桶应该存储图像文件本身,这些文件的任何类型的动态索引都应该在某种数据库中完成。
  • 对不起,如果我不能说清楚!我使用“AWS.S3.ManagedUpload”上传方法将图像存储在s3中;列出我使用“s3.listObjects”。当我列出图像时,列表的顺序始终是从最旧到最新的图像。我希望能够动态更改这种顺序。我研究了其他 s3 方法,但没有找到任何可以让我“排序”存储桶的方法。
  • s3.listObjects 不保证从最旧到最新。并且依赖该 API 作为您的索引,同时还期望能够修改排序,是完全不合理的。
  • 所以你有什么建议?
  • 正如我在第一条评论中建议的那样,将图像列表按照您希望它们出现的顺序存储在数据库中。

标签: javascript amazon-web-services amazon-s3


【解决方案1】:

这无法控制 ListObjects 或 ListObjectsV2 返回的现有对象的顺序。来自https://docs.aws.amazon.com/AmazonS3/latest/userguide/ListingKeysUsingAPIs.html

列表结果始终以 UTF-8 二进制顺序返回

所以当你说

当我列出图像时,列表的顺序始终是从最旧到最新的图像

这让我怀疑密钥中有上传的日期时间(?)

我认为通常您必须将图像的索引存储在与图像本身分开的地方。传统上,在数据库中......但如果您想要一个仅限 S3 的解决方案,您可以将它们存储在图像旁边的单独 JSON 对象中?

【讨论】:

  • 嗯,明白了。是的,没错,上传完成时会使用时间戳。我会尝试你的解决方案,然后我会回来告诉你结果如何,谢谢!
猜你喜欢
  • 1970-01-01
  • 2022-01-23
  • 1970-01-01
  • 2020-11-24
  • 2020-01-12
  • 2018-01-04
  • 1970-01-01
  • 1970-01-01
  • 2012-10-03
相关资源
最近更新 更多