关于定制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 相关文章推荐
IE6、IE7中setAttribute不支持class/for/rowspan/colspan等属性
Aug 28 Javascript
js命名空间写法示例
Dec 18 Javascript
AngularJS基础 ng-focus 指令简单示例
Aug 01 Javascript
在js中实现邮箱格式的验证方法(推荐)
Oct 24 Javascript
微信小程序开发实战教程之手势解锁
Nov 18 Javascript
JS DOMReady事件的六种实现方法总结
Nov 23 Javascript
任意Json转成无序列表的方法示例
Dec 09 Javascript
H5手机端多文件上传预览插件
Apr 21 Javascript
setTimeout时间设置为0详细解析
Mar 13 Javascript
使用vue cli4.x搭建vue项目的过程详解
May 08 Javascript
微信小程序学习总结(五)常见问题实例小结
Jun 04 Javascript
原生JavaScript写出Tabs标签页的实例代码
Jul 20 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
php自动加载机制的深入分析
2013/06/08 PHP
ThinkPHP上使用多说评论插件的方法
2014/10/31 PHP
php使用fgetcsv读取csv文件出现乱码的解决方法
2014/11/08 PHP
PHP判断手机是IOS还是Android
2015/12/09 PHP
简单了解WordPress开发中update_option()函数的用法
2016/01/11 PHP
php实现微信企业号支付个人的方法详解
2017/07/26 PHP
jquery nth-child()选择器的简单应用
2010/07/10 Javascript
javascript中最常用的继承模式 组合继承
2010/08/12 Javascript
js模仿jquery的写法示例代码
2013/06/16 Javascript
ie8本地图片上传预览示例代码
2014/01/12 Javascript
js中的json对象详细介绍
2014/10/29 Javascript
Jquery结合HTML5实现文件上传
2015/06/25 Javascript
阿里巴巴技术文章分享 Javascript继承机制的实现
2016/01/14 Javascript
js操作XML文件的实现方法兼容IE与FireFox
2016/06/25 Javascript
plupload+artdialog实现多平台上传文件
2016/07/19 Javascript
jquery对象和DOM对象的相互转换详解
2016/10/18 Javascript
BootstrapValidator超详细教程(推荐)
2016/12/07 Javascript
分享Bootstrap简单表格、表单、登录页面
2017/08/04 Javascript
JavaScript 下载svg图片为png格式
2018/06/21 Javascript
在vs code 中如何创建一个自己的 Vue 模板代码
2020/11/10 Javascript
[01:14]3.19DOTA2发布会 三代刀塔人第二代
2014/03/25 DOTA
Python imageio读取视频并进行编解码详解
2019/12/10 Python
详解Flask前后端分离项目案例
2020/07/24 Python
Python 如何实现访问者模式
2020/07/28 Python
施华洛世奇美国官网:SWAROVSKI美国
2018/02/08 全球购物
意大利咖啡、浓缩咖啡和浓缩咖啡机:illy caffe
2019/03/20 全球购物
澳大利亚买卖正宗二手奢侈品交易平台:Luxe.It.Fwd
2019/10/16 全球购物
俄罗斯达美乐比萨外送服务:Domino’s Pizza
2020/12/18 全球购物
Linux的文件类型
2012/03/07 面试题
2014年开学第一课活动方案
2014/03/06 职场文书
婚假请假条怎么写
2014/04/10 职场文书
2014党员干部四风问题对照检查材料思想汇报
2014/09/24 职场文书
房屋出租协议书范本(标准版)
2014/09/24 职场文书
农村党员学习党的群众路线教育实践活动心得体会
2014/11/04 职场文书
家装电话营销开场白
2015/05/29 职场文书
Android实现图片九宫格
2022/06/28 Java/Android