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爬虫抓取手机APP的传输数据
Jan 22 Python
放弃 Python 转向 Go语言有人给出了 9 大理由
Oct 20 Python
利用Python-iGraph如何绘制贴吧/微博的好友关系图详解
Nov 02 Python
python numpy 一维数组转变为多维数组的实例
Jul 02 Python
Python matplotlib通过plt.scatter画空心圆标记出特定的点方法
Dec 13 Python
Python匿名函数/排序函数/过滤函数/映射函数/递归/二分法
Jun 05 Python
Python文件路径名的操作方法
Oct 30 Python
VSCode中自动为Python文件添加头部注释
Nov 14 Python
Python 内置函数globals()和locals()对比详解
Dec 23 Python
给Python学习者的文件读写指南(含基础与进阶)
Jan 29 Python
详解字符串在Python内部是如何省内存的
Feb 03 Python
后端开发使用pycharm的技巧(推荐)
Mar 27 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
实现了一个PHP5的getter/setter基类的代码
2007/02/25 PHP
php+MySql实现登录系统与输出浏览者信息功能
2016/07/01 PHP
Zend Framework实现自定义过滤器的方法
2016/12/09 PHP
PHP获取文件扩展名的方法实例总结
2017/06/10 PHP
基于jquery的多功能软键盘插件
2012/07/25 Javascript
js 操作select和option常用代码整理
2012/12/13 Javascript
jQuery中[attribute*=value]选择器用法实例
2014/12/31 Javascript
js判断一个字符串是否包含一个子串的方法
2015/01/26 Javascript
浅谈javascript语法和定时函数
2015/05/03 Javascript
JavaScript截取、切割字符串的技巧
2016/01/07 Javascript
全面详细的jQuery常见开发技巧手册
2016/02/21 Javascript
整理JavaScript对DOM中各种类型的元素的常用操作
2016/05/05 Javascript
js 毫秒转天时分秒的实例
2017/11/17 Javascript
bootstrap下拉分页样式 带跳转页码
2018/12/29 Javascript
node.js实现http服务器与浏览器之间的内容缓存操作示例
2020/02/11 Javascript
vue.js this.$router.push获取不到params参数问题
2020/03/03 Javascript
[02:17]《辉夜杯》TRG战队巡礼
2015/10/26 DOTA
python邮件发送smtplib使用详解
2020/06/16 Python
Python文件操作方法详解
2020/02/09 Python
Pandas时间序列:时期(period)及其算术运算详解
2020/02/25 Python
PyQt5+Pycharm安装和配置图文教程详解
2020/03/24 Python
如何使用pycharm连接Databricks的步骤详解
2020/09/23 Python
python分布式爬虫中消息队列知识点详解
2020/11/26 Python
python编程的核心知识点总结
2021/02/08 Python
python+opencv实现车道线检测
2021/02/19 Python
使用css3实现的tab选项卡代码分享
2014/12/09 HTML / CSS
Debenhams百货英国官方网站:Debenhams UK
2016/07/12 全球购物
迟到检讨书300字
2014/02/14 职场文书
建筑工程专业大学生求职信
2014/04/23 职场文书
逃课检讨书
2015/01/26 职场文书
大国崛起日本观后感
2015/06/02 职场文书
邹越演讲观后感
2015/06/15 职场文书
名人传读书笔记
2015/06/26 职场文书
中秋节主题班会
2015/08/14 职场文书
如何理解PHP核心特性命名空间
2021/05/28 PHP
python模块与C和C++动态库相互调用实现过程示例
2021/11/02 Python