django用户上传文件怎么接收(Django框架文件上传与自定义图片上传路径、上传文件名操作分析)
类别:脚本大全 浏览量:2247
时间:2021-10-03 01:18:24 django用户上传文件怎么接收
Django框架文件上传与自定义图片上传路径、上传文件名操作分析本文实例讲述了django框架文件上传与自定义图片上传路径、上传文件名操作。分享给大家供大家参考,具体如下:
文件上传
1、创建上传文件夹
在static文件夹下创建uploads用于存储接收上传的文件
在settings中配置,
|
media_root = os.path.join(base_dir,r 'static/uploads' ) |
2、定义上传表单
|
<form action = "{% url 'app:do_upload' %}" method = "post" enctype = "multipart/form-data" > |
文件数据存储在request.files
属性中
文件上传必须使用post请求方式
|
<form method = 'post' action = 'x' enctype = 'multipart/form-data' > { % csrf_token % } < input type = 'file' name = 'icon' > < input type = 'submit' value = '上传' > <form> |
3、手动存储文件
存储到关联用户的表字段中
|
def saveficon(request): if request.method = = 'post' f = request.files[ 'icon' ] filepath = os.path.join(settings.media_root,f.name) with open (filepath, 'wb' ) as fp: for part in f.chunks(): fp.write(part) |
4、django内置存储
-
imagefield
- 要导入pillow模块
- filefield
- 从request.files将文件获取出来,直接赋值给字段
- 存储的时候,数据库存储的是路径
- 存储在media_root
自定义图片上传路径和上传文件名
图片上传中,如果不对上传的文件名做处理,很容易引起文件名重复,这会覆盖之前上传的图片,django提供了自定义上传文件名的方法。
|
def generate_filename( self , instance, filename): """ apply (if callable) or prepend (if a string) upload_to to the filename, then delegate further processing of the name to the storage backend. until the storage layer, all file paths are expected to be unix style (with forward slashes). """ if callable ( self .upload_to): filename = self .upload_to(instance, filename) else : dirname = datetime.datetime.now().strftime( self .upload_to) filename = posixpath.join(dirname, filename) return self .storage.generate_filename(filename) |
上面的代码是django中对imagefield上传时,生成文件名的处理方式。如果 upload_to 的参数是可调用的,则直接调用来生成文件名(包括静态文件夹后的文件路径)。要自定义上传文件名就从这里着手。
|
import uuid from django.db import models def image_upload_to(instance, filename): return 'original_image/{uuid}/{filename}' . format (uuid = uuid.uuid4(). hex , filename = filename) class testimageupload(models.model): image = models.imagefield(upload_to = image_upload_to) |
按照上面的方式,就可以按照自己的意愿随意的处理文件名了(函数的参数个数是固定的)。
希望本文所述对大家基于django框架的python程序设计有所帮助。
您可能感兴趣
- vmware vcenter怎么用安全(关于Vmware vcenter未授权任意文件上传漏洞CVE-2021-21972的问题)
- php创建多个文件(PHP实现单文件、多个单文件、多文件上传函数的封装示例)
- nodejs部署上传文件(node.js使用express-fileupload中间件实现文件上传)
- vuephp后台开发框架(Vue+thinkphp5.1+axios实现文件上传)
- django用户上传文件怎么接收(Django框架文件上传与自定义图片上传路径、上传文件名操作分析)
- vue集成文件上传插件(vue 实现上传组件)
- python把文件上传服务器(Python 实现两个服务器之间文件的上传方法)
- php表单上传文件功能(PHP单文件上传原理及上传函数的封装操作示例)
- linux编写ftp程序(Linux实现文件上传ftp服务器脚本代码)
- vue3 动态生成组件(如何在vue3.0+中使用tinymce及实现多图上传文件上传公式编辑功能)
- laravel框架网站搭建教程(Laravel框架实现文件上传的方法分析)
- 宝塔面板怎么导入网站(宝塔面板如何设置文件上传大小)
- ASP.NET实现多文件上传
- vue文件上传进度处理(Vue 大文件上传和断点续传的实现)
- laravel 模块目录(Laravel框架文件上传功能实现方法示例)
- php上传大文件教程(PHP实现带进度条的Ajax文件上传功能示例)
- 素人恋爱综艺火药味十足 男生为赢得芳心集体扯头花,真是出好戏(素人恋爱综艺火药味十足)
- 《囧妈》为何受抵制 春节七部影片撤档背后的责任与博弈(囧妈为何受抵制)
- 提醒 2019年起河南驾考要开设科目五 官方回应来了(2019年起河南驾考要开设科目五)
- 省 市书法家协会 送万福进万家 活动走进禹州美丽乡村(省市书法家协会)
- 点赞 禹州苌庄正式撤乡建镇 未来发展不可估量(禹州苌庄正式撤乡建镇)
- 它荣获 中国生态魅力镇 称号 就在咱们禹州,一起来看看(中国生态魅力镇)
热门推荐
- dedecms二级栏目列表(DedeCMS系统TAG标签伪静态设置)
- html5如何控制内容(html5拖拽应用记录及注意点)
- 云服务器有必要备案吗(免备案云服务器多少钱?)
- vue界面自动生成(Vue中实现3D标签云的详细代码)
- php如何复制数组(php5对象复制、clone、浅复制与深复制实例详解)
- laravel队列失败原理(Laravel第三方包报class not found的解决方法)
- sqlserver数据库文件包括(详解SQL Server数据库状态和文件状态)
- docker 容器移植(Docker构建kubectl镜像的实现步骤)
- 如何使用sqlserver建立数据表(SqlServer编写数据库表的操作方式建库、建表、修改语句)
- dedecms标签怎么调用(dedecms首页调用随机文章及自动更新功能实例)
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9