我正在使用Django-1.7,并且在模型中有一个类型为ImageField的字段来存储指向AWS S3桶的图像链接。
cover_image = models.ImageField(upload_to='s3_bucket_name/', null=True, blank=True)在settins.py文件中,我
MEDIA_ROOT = 'url_to_aws_s3_bucket'
MEDIA_URL = 'url_to_aws_s3_bucket'
DEFAULT_FILE_STORAGE = 'storages.backends.s3boto.S3BotoStorage'
AWS_STORAGE_BUCKET_NAME = 'bucket_name'
AWS_ACCESS_KEY_ID = 's3_access_key'
AWS_SECRET_ACCESS_KEY = 's3_secret_key'问题是,当我以@的名字上传一个带有字符的图像时,Django在将图像上传到AmazonS3桶.之前,会删除的所有实例。
如何保持图像文件的名称不变?
发布于 2015-09-07 13:39:40
不是以upload_to='s3_bucket_name/'的形式传递字符串,而是传递函数
def change_filename(instance, filename):
return 'bucket_name/' + filename
# inside the model class
cover_image = models.ImageField(upload_to=change_filename, null=True, blank=True)现在效果很好。
发布于 2015-09-07 10:30:45
您可以尝试从S3BotoStorage继承并重新定义get_available_name方法:
class MyS3BotoStorage(S3BotoStorage):
def get_available_name(self, name):
return namehttps://stackoverflow.com/questions/32436336
复制相似问题