首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在上传到亚马逊S3桶之前,Django更改了图像名

在上传到亚马逊S3桶之前,Django更改了图像名
EN

Stack Overflow用户
提问于 2015-09-07 10:20:57
回答 2查看 433关注 0票数 3

我正在使用Django-1.7,并且在模型中有一个类型为ImageField的字段来存储指向AWS S3桶的图像链接。

代码语言:javascript
复制
cover_image = models.ImageField(upload_to='s3_bucket_name/', null=True, blank=True)

settins.py文件中,我

代码语言:javascript
复制
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桶.之前,会删除的所有实例。

如何保持图像文件的名称不变?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-09-07 13:39:40

不是以upload_to='s3_bucket_name/'的形式传递字符串,而是传递函数

代码语言:javascript
复制
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)

现在效果很好。

票数 0
EN

Stack Overflow用户

发布于 2015-09-07 10:30:45

您可以尝试从S3BotoStorage继承并重新定义get_available_name方法:

代码语言:javascript
复制
class MyS3BotoStorage(S3BotoStorage):
    def get_available_name(self, name):
        return name
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32436336

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档