我写了一个电话,要求将文件上传到boto3存储桶中。在通话中,您需要传递文件名Bucket。然后它将文件上传到存储桶。但是,我正在尝试为每个上传到存储桶的文件添加版本。因此,要实现对存储桶的版本控制;然后为我提供了我上传到该存储桶的文件的版本。
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。因此,对于我来说,我希望能够读取文件并将其与存储桶中的现有文件进行比较。如果对文件进行了更改,那么我只想将其附加在本地数据库的版本下。如果上传到存储桶的文件内容仍然相同->只需跳过该文件,而不添加到我的本地数据库中即可。
您可以使用ETag
与Amazon S3中的对象关联的对象来比较对象并确定它们是否相同。它是对象内容的MD5校验和。
如果新版本具有与先前版本相同的ETag,则只需跳过它。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句