2015-03-31 93 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