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计算对角线有理函数插值的方法
May 07 Python
python2.7读取文件夹下所有文件名称及内容的方法
Feb 24 Python
Python Requests模拟登录实现图书馆座位自动预约
Apr 27 Python
Python2.7 实现引入自己写的类方法
Apr 29 Python
python求最大值,不使用内置函数的实现方法
Jul 09 Python
Python将string转换到float的实例方法
Jul 29 Python
python防止随意修改类属性的实现方法
Aug 21 Python
python 截取XML中bndbox的坐标中的图像,另存为jpg的实例
Mar 10 Python
Python+OpenCV图像处理——图像二值化的实现
Oct 24 Python
Python字符串对齐方法使用(ljust()、rjust()和center())
Apr 26 Python
Python开发之QT解决无边框界面拖动卡屏问题(附带源码)
May 27 Python
关于python中readlines函数的参数hint的相关知识总结
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
php下几个常用的去空、分组、调试数组函数
2009/02/22 PHP
了解PHP的返回引用和局部静态变量
2015/06/04 PHP
php生成图片验证码
2015/06/09 PHP
form表单传递数组数据、php脚本接收的实例
2017/02/09 PHP
判断对象是否Window的实现代码
2012/01/10 Javascript
关于javascript event flow 的一个bug详解
2013/09/17 Javascript
jquery实现滑动图片自己测试的例子
2013/11/05 Javascript
浅谈关于JavaScript API设计的一些建议和准则
2015/06/24 Javascript
jQuery随手笔记之常用的jQuery操作DOM事件
2015/11/29 Javascript
深入理解ECMAScript的几个关键语句
2016/06/01 Javascript
AngularJS使用ng-options指令实现下拉框
2016/08/23 Javascript
jQuery实现右侧抽屉式在线客服功能
2017/12/25 jQuery
Angular6 Filter实现页面搜索的示例代码
2018/12/02 Javascript
nodejs检测因特网是否断开的解决方案
2019/04/17 NodeJs
Angular 多级路由实现登录页面跳转(小白教程)
2019/11/19 Javascript
js仿360开机效果
2019/12/26 Javascript
详解TensorFlow查看ckpt中变量的几种方法
2018/06/19 Python
python中的decorator的作用详解
2018/07/26 Python
Python利用sqlacodegen自动生成ORM实体类示例
2019/06/04 Python
Python matplotlib生成图片背景透明的示例代码
2019/08/30 Python
Python networkx包的实现
2020/02/14 Python
使用python 计算百分位数实现数据分箱代码
2020/03/03 Python
python 实现有道翻译功能
2021/02/26 Python
自然健康的概念:Natural Healthy Concepts
2020/01/26 全球购物
一组SQL面试题
2016/02/15 面试题
优秀学生自我鉴定范例
2013/12/18 职场文书
五一家具促销方案
2014/01/10 职场文书
婚礼秀策划方案
2014/05/19 职场文书
信仰心得体会
2014/09/05 职场文书
优秀教师单行材料
2014/12/16 职场文书
工程技术员岗位职责
2015/04/11 职场文书
农村婚礼司仪主持词
2015/06/29 职场文书
nginx简单配置多个server的方法
2021/03/31 Servers
 分享一个Python 遇到数据库超好用的模块
2022/04/06 Python
为什么MySQL8新特性会修改自增主键属性
2022/04/18 MySQL
MySQL数据库配置信息查看与修改方法详解
2022/06/25 MySQL