我有一个C#应用程序,用户可以在其中将图像上传到S3存储桶。它是一个电子商务应用程序,所以我期望高负载。我打算在图像名称前添加前缀并上传到S3,以避免出现重复或特殊字符的情况 (https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingMetadata.html#object-key-guidelines)。
在这种情况下,如果用户希望更改名称(我没有在数据库中存储原始名称和更改的名称映射),我该如何在用户想要访问的应用程序中重新访问同一张上载的图片?
在S3中存储和检索图像以及创建键名时,应该遵循哪些最佳实践?
答案 0 :(得分:1)
如果希望每个用户都具有隔离的空格名称:
FullKey= MD5(UserName+DateAndTimeofRegistration) + KeyName
答案 1 :(得分:1)
正确的答案是您必须使用数据库。
这是您唯一知道的方法:
一旦存储桶中有大量对象(例如数千个),调用Amazon S3以获取对象列表将效率低。他们可能会花费大量时间来检索列表。
因此,除非您完全负责使用户记住他们上载的文件名,否则您将需要自己管理列表。
步骤如下:
还要考虑用户如何删除对象,如果他们再次上传具有相同名称的对象(覆盖还是保留两者?),文件是否应在一段时间后过期(否则您需要付费),该怎么办?永久存储)
答案 2 :(得分:0)
您可以为每个图像添加原始文件名和用户的元数据密钥。然后在检索中通过原始文件名键进行搜索。