Amazon s3 如何在AWS S3上管理用户配置文件pic更新?

Amazon s3 如何在AWS S3上管理用户配置文件pic更新?,amazon-s3,Amazon S3,我正在使用AWS S3在移动应用程序上保存用户配置文件图片 如果在用户更新其图像时请求这些图片,我如何保证这些图片的请求不会导致文件损坏? 请注意,尽管这些文件很小,但移动应用程序上的连接可能会中断,导致上传暂停(甚至可能持续数小时) 我的第一个想法是以临时名称上传新文件,完成后删除原始文件并重命名上传的文件。 不过,我在iOS SDK中找不到任何用于此的命令 另一种方法是在文件名中增加一个数字,并在完成时始终指向数据库中的新文件。但由于我使用的是一个非规范化的nosql数据库,这导致了一个巨大

我正在使用AWS S3在移动应用程序上保存用户配置文件图片

如果在用户更新其图像时请求这些图片,我如何保证这些图片的请求不会导致文件损坏? 请注意,尽管这些文件很小,但移动应用程序上的连接可能会中断,导致上传暂停(甚至可能持续数小时)

我的第一个想法是以临时名称上传新文件,完成后删除原始文件并重命名上传的文件。 不过,我在iOS SDK中找不到任何用于此的命令

另一种方法是在文件名中增加一个数字,并在完成时始终指向数据库中的新文件。但由于我使用的是一个非规范化的nosql数据库,这导致了一个巨大的头痛和不必要的清理复杂性


有什么想法吗?

你在担心一个没有问题的问题

S3上传是原子的。当您在S3上覆盖一个对象时,就没有机会破坏前一个对象的下载。从技术上讲,对象并没有被“覆盖”——它被替换——这是一个很好的区别,但有一个区别——在替换上传成功完成之前,旧对象不会发生任何变化

(事实上,由于S3的最终一致性覆盖模型,在新上传完成后很短时间内,前一个对象仍然会返回是可能的,尽管可能性不大)

此外,如果使用S3上传发送
Content-MD5
头,则上传过程中会出现故障(暂停、连接中断、损坏等)绝对不允许存储替换对象——S3将中止操作,并且之前的版本将保持完整,除非可以根据指定的
Content-MD5
验证上载的对象。(SDK应该会为您执行此操作。)


请注意,无论是否在bucket上启用了对象版本控制,这都是正确的

好极了!谢谢!:)