代码之家  ›  专栏  ›  技术社区  ›  GeneralBear

在同一个s3存储桶中使用boto3重命名密钥

  •  0
  • GeneralBear  · 技术社区  · 7 年前

    我正在尝试重新设置上传文件的密钥,以便它们从“临时上传”文件夹移动到“新上传”文件夹。

    这是我迄今为止的尝试——我没有收到任何错误,但文件仍处于“临时上传”状态

      bucket = s3.Bucket(s3_bucket)
        temp_prefix = 'temp-uploads/' + packageInstance.prefix + '/'
        new_prefix = 'new-uploads/' + packageInstance.prefix + '/'
        for obj in bucket.objects.filter(Prefix=temp_prefix):
            old_source = {'Bucket': bucket,
                          'Key': obj.key}
            new_key = obj.key.replace(temp_prefix, new_prefix)
            new_obj = bucket.Object(new_key)
            new_obj.copy(old_source)
    
    1 回复  |  直到 7 年前
        1
  •  0
  •   Bruno A. ruddra    7 年前

    这似乎是从中复制的实际文件 temp-uploads/ new-uploads/ ,因此旧文件仍存在于旧位置。

    然后,Django上传的文件作为参考存储在 FileField .这意味着Django会根据之前上传的文件生成一个URL。如果文件在Django之外的桶上移动,它就无法知道发生了什么。