2015-03-31 131 views
3

在我的Django项目中,我使用Django-storageS将媒体文件保存在我的Amazon S3中。使用Django存储删除Amazon S3中的文件

我跟着这个tutorial(我也用Django-rest-framework)。这适用于我:我可以上传一些图像,并可以在S3存储上看到这些图像。

但是,如果我尝试删除模型(包含ImageField)的实例,则不会删除S3中的相应文件。这是对的吗?我不需要删除S3中的资源。

回答

1

您可以通过下面的代码提供其ID(文件名的S3存储)删除S3文件:

import boto 
from boto.s3.key import Key 
from django.conf import settings 

def s3_delete(id): 
    s3conn = boto.connect_s3(settings.AWS_ACCESS_KEY, 
      settings.AWS_SECRET_ACCESS_KEY) 
    bucket = s3conn.get_bucket(settings.S3_BUCKET) 

    k = Key(bucket) 
    k.key = str(id) 
    k.delete() 

确保在settings.py你设置S3变量正确,包括:AWS_ACCESS_KEYAWS_SECRET_ACCESS_KEYS3_BUCKET