我已经写了一个调用来上传boto3存储桶中的文件。 在通话中,您需要传递文件名,存储桶。 然后它会将文件上传到存储桶。 但是,我正在尝试为上传到存储桶的每个文件添加版本。所以为了实现这一点,我为我的桶启用了版本控制;然后给了我上传到那个桶的文件的版本。
bucketFile = s3.meta.client.upload_file(filename, str(bucket),filename)
然后,为了获得我上传的该文件的对象版本,我执行以下操作
objectSummary = s3.ObjectSummary(bucket,filename)
object = objectSummary.get()
versionID = object.get('VersionId')
以下代码为我上传到该存储桶的每个文件提供了版本ID。 所以我想做的是 --->获取文件的版本 ---->将该版本附加到我的本地数据库,如此
versionsAdd = versions(version_url=versionID, filename=filename)
然而,对我来说困难的部分是,如果文件内容仍然相同,我不想附加该版本。无论文件内容是什么,boto3都给我versionID。所以对我来说,我希望能够读取一个文件并将其与我桶中的现有文件进行比较。如果对文件进行了更改,我只想将其添加到本地数据库中的版本下。如果上传到存储桶的文件仍然是相同的内容 - >只是跳过它,而不是添加到我的本地数据库。
答案 0 :(得分:1)
您可以使用与Amazon S3中的对象关联的ETag
来比较对象并确定它们是否相同。它是对象内容的MD5校验和。
如果新版本与之前版本具有相同的ETag,则只需跳过它。