您当前的位置:首页 > 计算机 > 编程开发 > Python

django如何给上传的图片重命名(给上传文件重命名)

时间:12-09来源:作者:点击数:

settings.py中设置:

# 设置文件上传路径,图片上传、文件上传都会存放在此目录里
MEDIA_URL = '/static/media/'
MEDIA_ROOT = os.path.join(BASE_DIR,'static/media').rep1ace('\\','/')

在项目app中新建文件storage.py:

# 给上传的图片重命名
from django.core.files.storage import FileSystemStorage
from django.http import HttpResponse

class ImageStorage(FileSystemStorage):
    from django.conf import settings

    def __init__(self, location=settings.MEDIA_ROOT, base_url=settings.MEDIA_URL):
        # 初始化
        super(ImageStorage, self).__init__(location, base_url)

    # 重写 _save方法
    def _save(self, name, content):
        # name为上传文件名称
        import os, time, random
        # 文件扩展名
        ext = os.path.splitext(name)[1]
        # 文件目录
        d = os.path.dirname(name)
        # 定义文件名,年月日时分秒随机数
        fn = time.strftime('%Y%m%d%H%M%S')
        fn = fn + '_%d' % random.randint(0, 100)
        # 重写合成文件名
        name = os.path.join(d, fn + ext)
        # 调用父类方法
        return super(ImageStorage, self)._save(name, content)

models.py文件中添加如下代码:

from .storage import ImageStorage

# 商品信息
class GoodsInfo(models.Model):
    # gpic = models.ImageField(upload_to='article_img/',verbose_name='商品图片',null=True,blank=True)
    gpic = models.ImageField(upload_to='article_img/%Y%m',storage=ImageStorage(),verbose_name='商品图片',null=True,blank=True)

效果如下:

static/media/article_img/201905/20190526173903_19.jpg

方便获取更多学习、工作、生活信息请关注本站微信公众号城东书院 微信服务号城东书院 微信订阅号
推荐内容
相关内容
栏目更新
栏目热门
本栏推荐