关于定制FileField中的上传文件名称问题


Posted in Javascript onAugust 22, 2017

FileField中的upload_to属性可以设定上传文件的存储目录和名称,它可以是个字符串,也可以是个callable,比如一个方法。

  当upload_to的值设为一个方法时,就可以对上传文件的名称进行修改了。方法需要两个参数,instance与filename,instance为此FileField所属的Model实例,filename为上传文件的名称。

  举例:

def user_directory_path(instance, filename):
 # file will be uploaded to MEDIA_ROOT/user_<id>/<filename>
 return 'user_{0}/{1}'.format(instance.user.id, filename)
class MyModel(models.Model):
 upload = models.FileField(upload_to=user_directory_path)

 当一个类定义了__call__方法时,也可以像func一样被调用,所以,upload_to的值也可以是一个定义了__call__方法的类。

   比如,要根据上传时间为文件名加时间戳:

import hashlib
import os
import time
from django.utils.deconstruct import deconstructible
@deconstructible
class TimeStampFileName(object):
 def __init__(self, path):
  self.path = os.path.join(path, "%s%s")
 def __call__(self, instance, filename):
  extension = os.path.splitext(filename)[1]
  data = "%s_%d"%(filename,int(time.time()))
  file_hash = hashlib.sha1(data).hexdigest()
  return self.path % (file_hash, extension)

 Model中的FileField可以如下定义:

class MyModel(models.Model):
 upload = models.FileField(upload_to=TimeStampFileName('media/'), )

总结

以上所述是小编给大家介绍的定制FileField中的上传文件名称,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
一个cssQuery对象 javascript脚本实现代码
Jul 21 Javascript
jquery.form.js用法之清空form的方法
Mar 07 Javascript
Jquery 实现弹出层插件
Jan 28 Javascript
AngularJS控制器之间的通信方式详解
Nov 03 Javascript
Vue.js鼠标悬浮更换图片功能
May 17 Javascript
微信小程序之GET请求的实例详解
Sep 29 Javascript
vue项目中使用axios上传图片等文件操作
Nov 02 Javascript
jQuery实现的上传图片本地预览效果简单示例
Mar 29 jQuery
Layui事件监听的实现(表单和数据表格)
Oct 17 Javascript
vue开发移动端底部导航条功能
Apr 08 Javascript
jQuery实现的上拉刷新功能组件示例
May 01 jQuery
js里面的变量范围分享
Jul 18 Javascript
React复制到剪贴板的示例代码
Aug 22 #Javascript
Angularjs实现下拉框联动的示例代码
Aug 22 #Javascript
vue.js异步上传文件前后端实现代码
Aug 22 #Javascript
node中koa中间件机制详解
Aug 22 #Javascript
理解javascript async的用法
Aug 22 #Javascript
React Native之TextInput组件解析示例
Aug 22 #Javascript
EasyUI的DataGrid每行数据添加操作按钮的实现代码
Aug 22 #Javascript
You might like
新52大事件
2020/03/03 欧美动漫
php+oracle 分页类
2006/10/09 PHP
使ecshop模板中可引用常量的实现方法
2011/06/02 PHP
一个PHP验证码类代码分享(已封装成类)
2011/07/17 PHP
XAMPP安装与使用方法详细解析
2013/11/27 PHP
php图像处理类实例
2015/07/28 PHP
php redis实现文章发布系统(用户投票系统)
2017/03/04 PHP
window.open的页面如何刷新(父页面)上层页面
2012/12/28 Javascript
使用Jquery获取带特殊符号的ID 标签的方法
2014/04/30 Javascript
js实现编辑div节点名称的方法
2014/12/17 Javascript
基于JS实现简单的样式切换效果代码
2015/09/04 Javascript
深入JavaScript高级程序设计之对象、数组(栈方法,队列方法,重排序方法,迭代方法)
2015/12/01 Javascript
简单介绍JavaScript数据类型之隐式类型转换
2015/12/28 Javascript
基于JavaScript判断浏览器到底是关闭还是刷新(超准确)
2016/02/01 Javascript
jQuery实现checkbox列表的全选、反选功能
2016/11/24 Javascript
JS+CSS实现网页加载中的动画效果
2017/10/27 Javascript
Vue组件Draggable实现拖拽功能
2018/12/01 Javascript
[00:34]DOTA2上海特级锦标赛 Spirit战队宣传片
2016/03/04 DOTA
Python中的fileinput模块的简单实用示例
2015/07/09 Python
Django实现快速分页的方法实例
2017/10/22 Python
Python中flatten( )函数及函数用法详解
2018/11/02 Python
python去除拼音声调字母,替换为字母的方法
2018/11/28 Python
pytorch标签转onehot形式实例
2020/01/02 Python
Python +Selenium解决图片验证码登录或注册问题(推荐)
2020/02/09 Python
Python基于codecs模块实现文件读写案例解析
2020/05/11 Python
IWOOT美国:新奇的小玩意
2018/04/27 全球购物
写一个方法,输入一个文件名和一个字符串,统计这个字符串在这个文件中出现的次数
2016/04/13 面试题
求职信需要的五点内容
2014/02/01 职场文书
财务人员求职自荐书范文
2014/02/10 职场文书
《掌声》教学反思
2014/02/23 职场文书
出纳会计岗位职责
2014/03/12 职场文书
单位工作证明书格式
2014/10/04 职场文书
2014年党风廉政建设工作总结
2014/11/19 职场文书
2014年监理个人工作总结
2014/12/11 职场文书
python spilt()分隔字符串的实现示例
2021/05/21 Python
【DOTA2】总决赛血虐~ XTREME GAMING vs MAGMA - OGA DOTA PIT 2022 CN
2022/04/02 DOTA