django fileFiled字段上传文件改名字



django fileFiled字段上传文件改名字方法介绍。

首先修改settings.py的配置,通过查看源文件,可以看到DEFAULT_FILE_STORAGE默认指向的是FileStorage,我们可以修改指向,然后重写save方法,
修改settings.py添加 DEFAULT_FILE_STORAGE = “appun.customfilefield.storage.FileStorage” 项目 是 appun,放在文件夹customfilefield下的storage.py中,customfilefield下需要添加空白文件__init__.py,否则django无法找到,
下面是storage.py的代码:
# -*-coding:utf-8 -*-
from django.core.files.storage import FileSystemStorage
from django.http import HttpResponse
from django.conf import settings
import os, time, random
class FileStorage(FileSystemStorage):
    def __init__(self, location=settings.MEDIA_ROOT, base_url=settings.MEDIA_URL):
        #初始化
        super(FileStorage, self).__init__(location, base_url)
    #重写 _save方法      
    def _save(self, name, content):
        #文件扩展名
        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(FileStorage, self)._save(name, content)