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实现过滤单个Android程序日志脚本分享
Jan 16 Python
Python爬虫模拟登录带验证码网站
Jan 22 Python
Python有序字典简单实现方法示例
Sep 28 Python
Python单元测试unittest的具体使用示例
Dec 17 Python
pygame编写音乐播放器的实现代码示例
Nov 19 Python
python实现简单日志记录库glog的使用
Dec 13 Python
详解Python直接赋值,深拷贝和浅拷贝
Jul 09 Python
pytorch 移动端部署之helloworld的使用
Oct 30 Python
如何通过python检查文件是否被占用
Dec 18 Python
python pillow库的基础使用教程
Jan 13 Python
基于Pytorch版yolov5的滑块验证码破解思路详解
Feb 25 Python
分享几种python 变量合并方法
Mar 20 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基于mcrypt的加密解密实例
2014/10/27 PHP
PHP SPL标准库之数据结构栈(SplStack)介绍
2015/05/12 PHP
Yii2中datetime类的使用
2016/12/17 PHP
PHP设计模式之观察者模式定义与用法示例
2018/08/04 PHP
PHP之认识(二)关于Traits的用法详解
2019/04/11 PHP
ExtJS的FieldSet的column列布局
2009/11/20 Javascript
js优化针对IE6.0起作用(详细整理)
2012/12/25 Javascript
jQuery入门介绍之基础知识
2015/01/13 Javascript
轻松学习jQuery插件EasyUI EasyUI创建菜单与按钮
2015/11/30 Javascript
使用Node.js给图片加水印的方法
2016/11/15 Javascript
react.js 获取真实的DOM节点实例(必看)
2017/04/17 Javascript
vue + vuex todolist的实现示例代码
2018/03/09 Javascript
node打造微信个人号机器人的方法示例
2018/04/26 Javascript
JavaScript callback回调函数用法实例分析
2018/05/08 Javascript
详解javascript中的变量提升和函数提升
2018/05/24 Javascript
实例分析Array.from(arr)与[...arr]到底有何不同
2019/04/09 Javascript
webpack4 配置 ssr 环境遇到“document is not defined”
2019/10/24 Javascript
Linux下使用python自动修改本机网关代码分享
2015/05/21 Python
Python基础语言学习笔记总结(精华)
2017/11/14 Python
使用Python搭建虚拟环境的配置方法
2018/02/28 Python
用 Python 连接 MySQL 的几种方式详解
2018/04/04 Python
python将处理好的图像保存到指定目录下的方法
2019/01/10 Python
对Python中创建进程的两种方式以及进程池详解
2019/01/14 Python
Python函数定义及传参方式详解(4种)
2019/03/18 Python
基于python实现百度翻译功能
2019/05/09 Python
Python MOCK SERVER moco模拟接口测试过程解析
2020/04/13 Python
html5 viewport使用方法示例详解
2013/12/02 HTML / CSS
医学专业毕业生个人的求职信
2013/12/04 职场文书
酒店执行总经理岗位职责
2013/12/15 职场文书
大学生职业生涯规划书参考模板
2014/03/05 职场文书
忠诚奉献演讲稿
2014/09/12 职场文书
食品委托检验协议书范本
2014/09/12 职场文书
局领导领导班子四风对照检查材料
2014/09/27 职场文书
暑期社会实践个人总结
2015/03/06 职场文书
「海贼王」112.9万粉丝纪念图标公布
2022/03/21 日漫
解决Vmware虚拟机安装centos8报错“Section %Packages Does Not End With %End. Pane Is Dead”
2022/06/01 Servers