博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
django之重写FileField字段的保存
阅读量:6698 次
发布时间:2019-06-25

本文共 1492 字,大约阅读时间需要 4 分钟。

重写FileField字段的保存,以重命名为例

settings.py添加配置

settings.py中末尾添加配置如下,指定指向的操作文件中的类:

# 文件上传重写DEFAULT_FILE_STORAGE = "app.customfilefield.storage.FileStorage"

添加FileStorage

app应用下添加python包customfilefield,注意有init.py文件,customfilefield下创建py文件storage.py,文件内容为:

storage.py

# -*-coding:utf-8 -*-from django.core.files.storage import FileSystemStoragefrom django.http import HttpResponsefrom django.conf import settingsimport os, time, randomfrom app import utilsclass 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)        # 定义文件名,源文件名,避开系统定义的随机字符串追加,所以避开不用name字段        end = utils.find_last(str(content), ".")        filename = ""        if end != -1:            filename = str(content)[:end]        # 定义文件名,年月日时分秒随机数        fn = time.strftime("%Y%m%d%H%M%S")        fn = fn + "_%d" % random.randint(0,100)        #重写合成文件名        name = os.path.join(d, filename + fn + ext)        #调用父类方法        return super(FileStorage, self)._save(name, content)

utils.py

# 获取字符串中指定字符最后一次出现的位置def find_last(string,str):    last_position=-1    while True:        position=string.find(str,last_position+1)        if position==-1:            return last_position        last_position=position

如此,最后上传的文件名为原文件名加上年月日时分秒加上0-100的随机数保存,效果如下:

clipboard.png

转载地址:http://xamoo.baihongyu.com/

你可能感兴趣的文章
《MATLAB图像处理超级学习手册》导读
查看>>
FSF 称 DRM 被用于锁定、控制和监视用户
查看>>
微软老兵 Antoine LeBlond 将正式离职
查看>>
《开源思索集》一Source Code + X
查看>>
《树莓派学习指南(基于Linux)》——1.4 将Raspbian烧录到SD卡
查看>>
《脱颖而出——成功网店经营之道》一2.6 连横:返利模式的应用及分销
查看>>
如约而至 Nexus 6 的 Android 7.1.1 已经上线
查看>>
阿里巴巴Dubbo实现的源码分析
查看>>
《Effective Debugging:软件和系统调试的66个有效方法》一第5条:在能够正常运作的系统与发生故障的系统之间寻找差别...
查看>>
《塑造互联网思维的企业》一一第4章 全球商务向社会化媒体的转变
查看>>
《简明电路分析》——导读
查看>>
[MySQL 5.6优化] --order by limit x,x 优化
查看>>
《Python爬虫开发与项目实战》——第3章 初识网络爬虫 3.1 网络爬虫概述
查看>>
《Adobe InDesign CS6中文版经典教程》—第1课1.5节修改文档的缩放比例
查看>>
《3ds Max疯狂设计学院》——1.6节3ds Max 2016新增的主要功能
查看>>
提升你的开发效率,10 个 NPM 使用技巧
查看>>
《Pro/ENGINEER野火版5.0从入门到精通》——2.5 设置零件单位
查看>>
《游戏视频主播手册》——2.2 哪些人适合做游戏主播
查看>>
《Windows PowerShell实战指南(第2版)》——1.4 搭建自己的实验环境
查看>>
《黑客秘笈——渗透测试实用指南》—第2章2.3节 外部或内部的主动式信息收集...
查看>>