django框架实现一次性上传多个文件功能示例【批量上传】


Posted in Python onJune 19, 2019

本文实例讲述了django框架实现一次性上传多个文件功能。分享给大家供大家参考,具体如下:

在用django 写文件上传的时候,从request.FILES['myfiles'] 获取到的文件始终只有一个, 但在HTML页面上明明用 HTML5 的 文件控件选择了多个文件,用的是CHROME  浏览器,一次可以选择多个文件上传。在 Pydev 开启debug模式,查看request 对象,发现上传的多个文件确实在request对象中,但为什么 用request.FILES['myfiles'] 却只能得到一个呢?

前端 html5 上传控件, 我用了jquery file upload

<input type="file" name="myfiles" multiple="">

django框架实现一次性上传多个文件功能示例【批量上传】

选择多个文件之后, 然后提交请求,开启pydev debug 模式,查看request内容:

django框架实现一次性上传多个文件功能示例【批量上传】

其中request.FILES 的内容为如下:

MultiValueDict: <MultiValueDict: {u'myfiles': [<InMemoryUploadedFile: 300x600.png (image/png)>, <InMemoryUploadedFile: todo.txt (text/plain)>]}>

很明显,上传的文件的确在其中,但是当用 request.FILES['myfiles'] 得到的确是最后一个。 而不能得到两个文件。跟踪代码发现,request.FILES 的类型为 MultiValueDict,这种字典类是特殊定义的,如果需要取得list 需要调用 getlist  方法,看到这里,豁然开朗,下面是得到上传的多个文件与处理的逻辑

files = request.FILES.getlist('myfiles')
for f in files:
   destination = open('d:/temp/' + f.name,'wb+')
   for chunk in f.chunks(): 
     destination.write(chunk)
   destination.close()

其实很简单的,就是不细心,另外django 默认是只处理单个文件上传的,要一次性批量处理多个文件上传就得采用这种方法。

希望本文所述对大家基于Django框架的Python程序设计有所帮助。

Python 相关文章推荐
python根据距离和时长计算配速示例
Feb 16 Python
python采用getopt解析命令行输入参数实例
Sep 30 Python
python3.5 + PyQt5 +Eric6 实现的一个计算器代码
Mar 11 Python
用python实现的线程池实例代码
Jan 06 Python
Python常见数据结构之栈与队列用法示例
Jan 14 Python
详解numpy的argmax的具体使用
May 27 Python
PyQt5中多线程模块QThread使用方法的实现
Jan 31 Python
python json.dumps中文乱码问题解决
Apr 01 Python
Python unittest基本使用方法代码实例
Jun 29 Python
Python连接Mysql进行增删改查的示例代码
Aug 03 Python
pycharm2020.1.2永久破解激活教程,实测有效
Oct 29 Python
Python+OpenCV检测灯光亮点的实现方法
Nov 02 Python
pyqt5对用qt designer设计的窗体实现弹出子窗口的示例
Jun 19 #Python
django框架基于模板 生成 excel(xls) 文件操作示例
Jun 19 #Python
python 读写excel文件操作示例【附源码下载】
Jun 19 #Python
解决.ui文件生成的.py文件运行不出现界面的方法
Jun 19 #Python
网易有道2017内推编程题 洗牌(python)
Jun 19 #Python
pyqt实现.ui文件批量转换为对应.py文件脚本
Jun 19 #Python
网易2016研发工程师编程题 奖学金(python)
Jun 19 #Python
You might like
《逃离塔科夫》——“萌新劝退,老手自嗨”的硬核FPS游戏
2020/04/03 其他游戏
PHP常用技巧总结(附函数代码)
2012/02/04 PHP
php调用Google translate_tts api实现代码
2013/08/07 PHP
PHP实现删除非站内外部链接实例代码
2014/06/17 PHP
php实现图片文件与下载文件防盗链的方法
2014/11/03 PHP
php实现httpRequest的方法
2015/03/13 PHP
FleaPHP框架数据库查询条件($conditions)写法总结
2016/03/19 PHP
PHP读取文本文件并逐行输出该行使用最多的字符与对应次数的方法
2016/11/25 PHP
PHP实现网站应用微信登录功能详解
2019/04/11 PHP
Alliance vs Liquid BO3 第二场2.13
2021/03/10 DOTA
游戏人文件夹程序 ver 3.0
2006/07/14 Javascript
JavaScript方法和技巧大全
2006/12/27 Javascript
详解javascript实现瀑布流列式布局
2016/01/29 Javascript
使用SVG基本操作API的实例讲解
2017/09/14 Javascript
vue中路由验证和相应拦截的使用详解
2017/12/13 Javascript
网页爬虫之cookie自动获取及过期自动更新的实现方法
2018/03/06 Javascript
小程序分享模块超级详解(推荐)
2019/04/10 Javascript
个人小程序接入支付解决方案
2019/05/23 Javascript
VueCli3.0中集成MockApi的方法示例
2019/07/05 Javascript
深入了解Vue.js 混入(mixins)
2020/07/23 Javascript
python 获取list特定元素下标的实例讲解
2018/04/09 Python
Pandas 对Dataframe结构排序的实现方法
2018/04/10 Python
Python爬虫小技巧之伪造随机的User-Agent
2018/09/13 Python
python 保存float类型的小数的位数方法
2018/10/17 Python
Python创建字典的八种方式
2019/02/27 Python
通过shell+python实现企业微信预警
2019/03/07 Python
python 实现多维数组(array)排序
2020/02/28 Python
Python数组拼接np.concatenate实现过程
2020/04/18 Python
Pyecharts地图显示不完成问题解决方案
2020/05/11 Python
python实现批处理文件
2020/07/28 Python
CSS3 box-shadow属性实例详解
2020/06/19 HTML / CSS
ASOS亚洲:ASOS Asia
2018/03/04 全球购物
J2SDK1.5与J2SDK5.0有什么区别
2012/09/19 面试题
汉语言文学职业规划
2014/02/14 职场文书
开业主持词
2014/03/21 职场文书
党员自我评议个人对照检查材料
2014/09/16 职场文书