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中的RSS处理
Apr 13 Python
Python中优化NumPy包使用性能的教程
Apr 23 Python
使用Python生成随机密码的示例分享
Feb 18 Python
python中kmeans聚类实现代码
Feb 23 Python
python调用matlab的m自定义函数方法
Feb 18 Python
Python中super函数用法实例分析
Mar 18 Python
完美解决pyinstaller打包报错找不到依赖pypiwin32或pywin32-ctypes的错误
Apr 01 Python
Python中实现输入一个整数的案例
May 03 Python
python3.6.8 + pycharm + PyQt5 环境搭建的图文教程
Jun 11 Python
浅谈keras中自定义二分类任务评价指标metrics的方法以及代码
Jun 11 Python
python 基于opencv 绘制图像轮廓
Dec 11 Python
Python matplotlib多个子图绘制整合
Apr 13 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 类型转换函数intval
2009/06/20 PHP
PHP性能优化工具篇Benchmark类调试执行时间
2011/12/06 PHP
PHP使用CURL实现对带有验证码的网站进行模拟登录的方法
2014/07/23 PHP
详解WordPress开发中get_header()获取头部函数的用法
2016/01/08 PHP
php判断手机浏览还是web浏览,并执行相应的动作简单实例
2016/07/28 PHP
永不消失的title提示代码
2007/02/15 Javascript
flash 得到自身url参数的代码
2009/11/15 Javascript
JS getAttribute和setAttribute(取得和设置属性)的使用介绍
2013/07/10 Javascript
js使用循环清空某个div中的input标签值
2014/09/29 Javascript
JS实现响应鼠标点击动画渐变弹出层效果代码
2016/03/25 Javascript
js实现上传图片及时预览
2016/05/07 Javascript
Markdown+Bootstrap图片自适应属性详解
2016/05/21 Javascript
Vue.js基础知识小结
2017/01/13 Javascript
详解Vue.js项目API、Router配置拆分实践
2018/03/16 Javascript
vue实现循环切换动画
2018/10/17 Javascript
Vue使用zTree插件封装树组件操作示例
2019/04/25 Javascript
JS学习笔记之闭包小案例分析
2019/05/29 Javascript
electron 安装,调试,打包的具体使用
2019/11/06 Javascript
原生JavaScript实现贪吃蛇游戏
2020/11/04 Javascript
Vue使用Element实现增删改查+打包的步骤
2020/11/25 Vue.js
Python 返回汉字的汉语拼音
2009/02/27 Python
python操作MySQL数据库具体方法
2013/10/28 Python
用Python写飞机大战游戏之pygame入门(4):获取鼠标的位置及运动
2015/11/05 Python
python之matplotlib学习绘制动态更新图实例代码
2018/01/23 Python
python实现的生成word文档功能示例
2019/08/23 Python
python实现连连看游戏
2020/02/14 Python
Html5 web本地存储实例详解
2016/07/28 HTML / CSS
localstorage和sessionstorage使用记录(推荐)
2017/05/23 HTML / CSS
详解h5页面在不同ios设备上的问题总结
2019/03/01 HTML / CSS
局域网定义和特性
2016/01/23 面试题
四下基层实施方案
2014/03/28 职场文书
中国梦演讲稿3分钟
2014/08/19 职场文书
2014年教师批评与自我批评思想汇报
2014/09/20 职场文书
电力安全教育培训心得体会
2016/01/11 职场文书
未来,这5大方向都很适合创业
2019/07/22 职场文书
十大好看的穿越动漫排名:《瑞克和莫蒂》第一,国漫《有药》在榜
2022/03/18 日漫