1、先在你项目中添加一个文件夹如:system
在文件夹下添加__init__.py
和storage.py
文件,并在storage.py
中添加如下代码:
# -*- coding: UTF-8 -*-from django.core.files.storage import FileSystemStoragefrom django.http import HttpResponseclass ImageStorage(FileSystemStorage):from django.conf import settingsdef __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)
2、在models.py
文件中添加如下代码:
from system.storage import ImageStoragepic=models.ImageField(upload_to='img/%Y/%m/%d',storage=ImageStorage()) #如果上传文件可以将ImageField换为FileField
3、这样就解决了问题,效果如下:
如果觉得《django如何给上传的图片重命名(给上传文件重命名)》对你有帮助,请点赞、收藏,并留下你的观点哦!