python - 在同一个 s3 存储桶中使用 boto3 重命名密钥
问题描述
我正在尝试重新键入上传的文件,以便它们从“临时上传”“文件夹”移动到“新上传”“文件夹。
到目前为止,这是我的尝试 --- 我没有收到任何错误,但文件仍在“临时上传”中
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)
解决方案
这似乎将实际文件从 复制temp-uploads/
到new-uploads/
,因此旧文件仍然存在于旧位置。
然后,Django 上传的文件作为引用存储在FileField
. 这意味着 Django 从之前上传的文件中生成一个 URL。如果文件被移动到 Django 之外的存储桶上,它无法知道它发生了。
推荐阅读
- javascript - 为什么我的图像在水平滚动中被剪裁 ij 分辨率较低
- angular - Angular Validator 模式未按预期工作
- powershell - 使用 Powershell 从文本文件中删除第一个字符
- javascript - 将动态变量传递给数组
- c# - 来自控制台应用程序的 Microsoft Word COM 互操作
- c# - 如何在强类型类中转换从 LUISRuntimeClient 返回的 Prediction.Entities
- python - 加入单独的箱线图图形文件
- c# - 单元测试中的 Azure.Core.ResponseHeaders
- azure-cosmosdb - 优化此查询以使用 gremlin 在图中获取谱系图
- c - 为什么我得到这个输出?