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 相关文章推荐
Windows系统下安装Python的SSH模块教程
Feb 05 Python
Python中处理字符串之isalpha()方法的使用
May 18 Python
Python中Django框架下的staticfiles使用简介
May 30 Python
Python多维/嵌套字典数据无限遍历的实现
Nov 04 Python
Pycharm设置界面全黑的方法
May 23 Python
python使用folium库绘制地图点击框
Sep 21 Python
关于Django ForeignKey 反向查询中filter和_set的效率对比详解
Dec 15 Python
python使用BeautifulSoup与正则表达式爬取时光网不同地区top100电影并对比
Apr 15 Python
Python实现一个数组除以一个数的例子
Jul 20 Python
Python importlib模块重载使用方法详解
Oct 13 Python
常用的Python代码调试工具总结
Jun 23 Python
FP-growth算法发现频繁项集——构建FP树
Jun 24 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
颠覆常识!无色透明的咖啡诞生了(中日双语)
2021/03/03 咖啡文化
数字转英文
2006/12/06 PHP
屏蔽机器人从你的网站搜取email地址的php代码
2012/11/14 PHP
php利用单例模式实现日志处理类库
2014/02/10 PHP
Yii的CDbCriteria查询条件用法实例
2014/12/04 PHP
Yii输入正确验证码却验证失败的解决方法
2017/06/06 PHP
js控制再次点击按钮之间的间隔时间可防止重复提交
2014/08/01 Javascript
JavaScript判断textarea值是否为空并给出相应提示
2014/09/04 Javascript
Javascript冒泡排序算法详解
2014/12/03 Javascript
Js与Jq 获取页面元素值的方法和差异对比
2015/04/30 Javascript
jQuery+css实现的换页标签栏效果
2016/01/27 Javascript
基于jQuery实现Ajax验证用户名是否存在实例
2016/03/30 Javascript
JS实现购物车特效
2017/02/02 Javascript
JS实现的简单拖拽购物车功能示例【附源码下载】
2018/01/03 Javascript
Node.js Stream ondata触发时机与顺序的探索
2019/03/08 Javascript
Python读写txt文本文件的操作方法全解析
2016/06/26 Python
简单实现python进度条脚本
2017/12/18 Python
pytorch 可视化feature map的示例代码
2019/08/20 Python
在vscode中配置python环境过程解析
2019/09/28 Python
在pycharm中创建django项目的示例代码
2020/05/28 Python
python 如何对logging日志封装
2020/12/02 Python
HTML5页面音视频在微信和app下自动播放的实现方法
2016/10/20 HTML / CSS
美国嘻哈文化生活方式品牌:GLD
2018/04/15 全球购物
美国购物网站:Clickhere2shop
2021/01/28 全球购物
什么是数据库锁?Oracle中都有哪些类型的锁?
2015/08/21 面试题
舞蹈教师自荐信
2014/01/27 职场文书
彩色的非洲教学反思
2014/02/18 职场文书
应用数学专业求职信
2014/03/14 职场文书
励志演讲稿300字
2014/08/21 职场文书
学习三严三实心得体会
2014/10/13 职场文书
优秀团支部申报材料
2014/12/26 职场文书
2015年“我们的节日·重阳节”活动总结
2015/07/29 职场文书
Python基础之教你怎么在M1系统上使用pandas
2021/05/08 Python
Python+Appium实现自动抢微信红包
2021/05/21 Python
MySQL 常见的数据表设计误区汇总
2021/06/07 MySQL
SpringCloud之@FeignClient()注解的使用方式
2021/09/25 Java/Android