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基础教程之类class定义使用方法
Feb 20 Python
pyqt4教程之实现半透明的天气预报界面示例
Mar 02 Python
总结python爬虫抓站的实用技巧
Aug 09 Python
python实现决策树分类算法
Dec 21 Python
用 Python 连接 MySQL 的几种方式详解
Apr 04 Python
Python3.4学习笔记之常用操作符,条件分支和循环用法示例
Mar 01 Python
Pyinstaller打包.py生成.exe的方法和报错总结
Apr 02 Python
python isinstance函数用法详解
Feb 13 Python
Python @property及getter setter原理详解
Mar 31 Python
Django微信小程序后台开发教程的实现
Jun 03 Python
pandas将list数据拆分成行或列的实现
Dec 13 Python
手把手教你用Django执行原生SQL的方法
Feb 18 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
dedecms中显示数字验证码的修改方法
2007/03/21 PHP
关于PHP session 存储方式的详细介绍
2013/06/25 PHP
thinkphp5 加载静态资源路径与常量的方法
2017/12/24 PHP
RSA实现JS前端加密与PHP后端解密功能示例
2019/08/05 PHP
Aster vs KG BO3 第三场2.19
2021/03/10 DOTA
js常见表单应用技巧
2008/01/09 Javascript
再谈ie和firefox下的document.all属性
2009/10/21 Javascript
THREE.JS入门教程(2)着色器-上
2013/01/24 Javascript
纯文字版返回顶端的js代码
2013/08/01 Javascript
javascript同页面多次调用弹出层具体实例代码
2013/08/16 Javascript
浅谈JavaScript Array对象
2014/12/29 Javascript
js的for in循环和java里foreach循环的区别分析
2015/01/28 Javascript
JS遍历对象属性的方法示例
2017/01/10 Javascript
Vuejs实现购物车功能
2017/11/05 Javascript
webpack4简单入门实例
2018/09/06 Javascript
详解关于表格合并span-method方法的补充(表格数据由后台动态返回)
2019/05/21 Javascript
js实现一个简易计算器
2020/03/30 Javascript
vue  elementUI 表单嵌套验证的实例代码
2019/11/06 Javascript
js实现移动端图片滑块验证功能
2020/09/29 Javascript
[00:37]2016完美“圣”典风云人物:rOtk宣传片
2016/12/09 DOTA
[01:10]为家乡而战!完美世界城市挑战赛全国总决赛花絮
2019/07/25 DOTA
Python队列的定义与使用方法示例
2017/06/24 Python
Python操作csv文件实例详解
2017/07/31 Python
Python中asyncio与aiohttp入门教程
2018/10/16 Python
Python不同目录间进行模块调用的实现方法
2019/01/29 Python
程序员的七夕用30行代码让Python化身表白神器
2019/08/07 Python
利用HTML5中的Canvas绘制一张笑脸的教程
2015/05/07 HTML / CSS
HTML5单选框、复选框、下拉菜单、文本域的实现代码
2020/12/01 HTML / CSS
美国时尚女装在线:Missguided
2016/12/03 全球购物
戴尔新西兰官网:Dell New Zealand
2020/01/07 全球购物
存储过程的优点有哪些
2012/09/27 面试题
应用化学专业职业生涯规划书
2013/12/31 职场文书
委托书模板
2014/04/04 职场文书
小学语文教师年度考核个人总结
2015/02/05 职场文书
海上钢琴师观后感
2015/06/03 职场文书