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的ORM框架SQLAlchemy入门教程
Apr 28 Python
Python实现获取操作系统版本信息方法
Apr 08 Python
python获取本机mac地址和ip地址的方法
Apr 29 Python
python实现文本文件合并
Dec 29 Python
老生常谈Python之装饰器、迭代器和生成器
Jul 26 Python
详解Python中如何写控制台进度条的整理
Mar 07 Python
了解不常见但是实用的Python技巧
May 23 Python
seek引发的python文件读写的问题及解决
Jul 26 Python
python安装gdal的两种方法
Oct 29 Python
Python文件时间操作步骤代码详解
Apr 13 Python
python cv2.resize函数high和width注意事项说明
Jul 05 Python
Python 的 __str__ 和 __repr__ 方法对比
Sep 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
PHP防注入安全代码
2008/04/09 PHP
PHP 数组遍历顺序理解
2009/09/09 PHP
在Debian系统下配置LNMP的教程
2015/07/09 PHP
PHP读取并输出XML文件数据的简单实现方法
2017/12/22 PHP
thinkphp框架实现路由重定义简化url访问地址的方法分析
2020/04/04 PHP
JS中剪贴板兼容性、判断复制成功或失败
2021/03/09 Javascript
最佳的addEvent事件绑定是怎样诞生的
2011/10/24 Javascript
jQuery+JSON+jPlayer实现QQ空间音乐查询功能示例
2013/06/17 Javascript
js去空格技巧分别去字符串前后、左右空格
2013/10/21 Javascript
js获取Html元素的实际宽度高度的方法
2016/05/19 Javascript
半个小时学json(json传递示例)
2016/12/25 Javascript
jquery 实时监听输入框值变化的完美方法(必看)
2017/01/26 Javascript
bootstrap中模态框、模态框的属性实例详解
2017/02/17 Javascript
简单谈谈require模块化jquery和angular的问题
2017/06/23 jQuery
vue 1.0 结合animate.css定义动画效果
2018/07/11 Javascript
webpack多入口多出口的实现方法
2018/08/17 Javascript
CKEditor4配置与开发详细中文说明文档
2018/10/08 Javascript
JS代码检查工具ESLint介绍与使用方法
2020/02/04 Javascript
JS实现iframe中子父页面跨域通讯的方法分析
2020/03/10 Javascript
微信公众号网页分享功能开发的示例代码
2020/05/27 Javascript
vue中父子组件传值,解决钩子函数mounted只运行一次的操作
2020/07/27 Javascript
Python实现截屏的函数
2015/07/26 Python
关于Python正则表达式 findall函数问题详解
2018/03/22 Python
对Python中DataFrame选择某列值为XX的行实例详解
2019/01/29 Python
python学习--使用QQ邮箱发送邮件代码实例
2019/04/16 Python
python 寻找离散序列极值点的方法
2019/07/10 Python
Django与pyecharts结合的实例代码
2020/05/13 Python
如何用python写个模板引擎
2021/01/14 Python
捷克钓鱼用品网上商店:Parys.cz
2018/06/15 全球购物
.TTL是什么?有什么用处,通常那些工具会用到它?(ping? traceroute? ifconfig? netstat?)
2016/05/09 面试题
生产部统计员岗位职责
2014/01/05 职场文书
党员群众路线承诺书
2014/05/20 职场文书
2015年爱牙日活动总结
2015/03/23 职场文书
初一语文教学反思
2016/03/03 职场文书
Python中itertools库的四个函数介绍
2022/04/06 Python
win10识别不了U盘怎么办 win10系统读取U盘失败的解决办法
2022/08/05 数码科技