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中os模块详解
Oct 14 Python
Python首次安装后运行报错(0xc000007b)的解决方法
Oct 18 Python
使用Python对SQLite数据库操作
Apr 06 Python
基于使用paramiko执行远程linux主机命令(详解)
Oct 16 Python
Python线上环境使用日志的及配置文件
Jul 28 Python
Django 拼接两个queryset 或是两个不可以相加的对象实例
Mar 28 Python
Python第三方库的几种安装方式(小结)
Apr 03 Python
python如何解析复杂sql,实现数据库和表的提取的实例剖析
May 15 Python
解决pytorch 交叉熵损失输出为负数的问题
Jul 07 Python
django rest framework 过滤时间操作
Jul 12 Python
python实现sm2和sm4国密(国家商用密码)算法的示例
Sep 26 Python
Python APScheduler执行使用方法详解
Dec 10 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/02 无线电
php 文件上传实例代码
2012/04/19 PHP
php给一组指定关键词添加span标签的方法
2015/03/31 PHP
PHP调用存储过程返回值不一致问题的解决方法分析
2016/04/26 PHP
PHP基于curl模拟post提交json数据示例
2018/06/22 PHP
一个加密JavaScript的开源工具PACKER2.0.2
2006/11/04 Javascript
将页面table内容与样式另存成excel文件的方法
2015/08/05 Javascript
AngularJS中处理多个promise的方式
2016/02/02 Javascript
jQuery插件扩展extend的简单实现原理
2016/06/24 Javascript
Javascript动画效果(1)
2016/10/11 Javascript
jQuery+Ajax实现用户名重名实时检测
2017/06/01 jQuery
jQuery实现带3D切割效果的轮播图功能示例【附源码下载】
2019/04/04 jQuery
微信小程序嵌入腾讯视频源过程详解
2019/08/08 Javascript
[02:51]2018年度DOTA2最佳中单位选手-完美盛典
2018/12/17 DOTA
[49:30]DOTA2-DPC中国联赛正赛 Dragon vs Dynasty BO3 第二场 3月4日
2021/03/11 DOTA
Python中使用asyncio 封装文件读写
2016/09/11 Python
简单谈谈python中的多进程
2016/11/06 Python
Python中将dataframe转换为字典的实例
2018/04/13 Python
Python设计模式之状态模式原理与用法详解
2019/01/15 Python
Python使用crontab模块设置和清除定时任务操作详解
2019/04/09 Python
python 比较字典value的最大值的几种方法
2020/04/17 Python
Python 字节流,字符串,十六进制相互转换实例(binascii,bytes)
2020/05/11 Python
快速了解Python开发环境Spyder
2020/06/29 Python
CSS3 三维变形实现立体方块特效源码
2016/12/15 HTML / CSS
英国广泛的照明产品网站:Lights4living
2018/01/28 全球购物
大专生自我鉴定范文
2013/10/01 职场文书
大学毕业的自我鉴定
2013/10/08 职场文书
30年同学聚会感言
2014/01/30 职场文书
给实习单位的感谢信
2014/02/01 职场文书
电子银行营销方案
2014/02/22 职场文书
前处理组长岗位职责
2014/03/01 职场文书
财务工作检讨书
2014/10/29 职场文书
世界红十字日活动总结
2015/02/10 职场文书
大学生自荐书范文
2015/03/05 职场文书
劳动仲裁代理词范文
2015/05/25 职场文书
Win11怎么把合并的任务栏分开 Win11任务栏合并分开教程
2022/04/06 数码科技