django学习笔记 多文件上传
习惯了flask 再用django 还是不太习惯 好麻烦 配置文件也忒多了
不过还是要学的
之前只能一个一个文件长传,这次试试多个文件
不适用django的forms创建表单
直接在html中使用 <form action="/" method="post" enctype="multipart/form-data">
{% csrf_token %} <input type="file" name="img" multiple="">
<input type="submit" value="上传图片">
</form>
其中最大改动就是在 文件位置添加了 multiple="" 这表示多文件长传,如果不添加这是一个文件长传 <input type="file" name="img" multiple="">
视图函数设置
def index(request):
if request.method == 'POST':
# 多个文件对象需要循环 使用getlist 获取对象
files = request.FILES.getlist('img')
for f in files:
print(f) 打印输出文件对象的名字
return render(request, 'base.html')
不过这样还不行,没有做文件过滤
def index(request):
allow = ['jpg','gif','png']
if request.method == 'POST':
files = request.FILES.getlist('img')
for f in files: # 限制文件格式
if f.name.split('.')[-1] not in allow:
continue
else: # 限制文件大小
if f.size > MAX_UPLOAD_SIZE:
continue
path_img = open(os.path.join(MEDIA_ROOT,f.name),'wb+')
for chunk in f.chunks():
path_img.write(chunk)
path_img.close()
return render(request, 'base.html')
MAX_UPLOAD_SIZE 在settings文件中设置
MAX_UPLOAD_SIZE = 5242880/10 # 5242880 是5m文件大小,如果有需求可以自己设置,我这边实验为/10
ALLOW_IMG_UP = ['jpg','gif','png']
不过由于不是forms的表单,所以不能直接在html中闪现错误信息,如果可以请直接用forms的表单
https://www.cnblogs.com/mosson/p/11059149.html
django学习笔记 多文件上传的更多相关文章
- Django:学习笔记(8)——文件上传
Django:学习笔记(8)——文件上传 文件上传前端处理 本模块使用到的前端Ajax库为Axio,其地址为GitHub官网. 关于文件上传 上传文件就是把客户端的文件发送给服务器端. 在常见情况(不 ...
- SpringMVC:学习笔记(8)——文件上传
SpringMVC--文件上传 说明: 文件上传的途径 文件上传主要有两种方式: 1.使用Apache Commons FileUpload元件. 2.利用Servlet3.0及其更高版本的内置支持. ...
- springmvc学习笔记--支持文件上传和阿里云OSS API简介
前言: Web开发中图片上传的功能很常见, 本篇博客来讲述下springmvc如何实现图片上传的功能. 主要讲述依赖包引入, 配置项, 本地存储和云存储方案(阿里云的OSS服务). 铺垫: 文件上传是 ...
- Javaweb学习笔记10—文件上传与下载
今天来讲javaweb的第10阶段学习.文件的上传与下载,今天主要说的是这个功能的实现,不用说了,听名字就是外行人也知道肯定很重要啦. 老规矩,首先先用一张思维导图来展现今天的博客内容. ...
- Struts2学习笔记(十一)——文件上传
1.单文件上传 单文件上传步骤: 1)创建上传jsp页面 文件上传的表单提交方式必须是POST方式,编码类型:enctype="multipart/form-data",默认是 a ...
- go web 第二天 学习笔记之文件上传
package main import ( "crypto/md5" "fmt" "html/template" "io" ...
- SpringMVC学习笔记八:文件上传及多个文件上传
SpringMVC实现文件上传需要加入jar包,commons-fileupload-1.3.1.jar,commons-io-2.2.jar 项目目录树: pom.xml加入需要的包 <pro ...
- Laravel 学习笔记之文件上传
自定义添加磁盘——upload 位置:config/filesystems.php 'disks' => [ 'local' => [ 'driver' => 'local', 'r ...
- java学习笔记 (6) —— 文件上传
1.新建upload.jsp <%@ page language="java" import="java.util.*" pageEncoding=&qu ...
随机推荐
- xpath-helper 插件下载
链接:https://pan.baidu.com/s/1YuTGrdwwAKQd2sIcuarBHQ 提取码:qb8p
- LeetCode Day 1
目录 1.TwoSum 2.AddTwoNumbers 4.FindMedianSortedArrays 1.TwoSum 给定一个整数数组nums和一个目标值 target,请你在该数组中找出和为目 ...
- Ionic 4 beta + Capacitor beta 尝鲜
本文为原创文章,转载请标明出处 开发环境: Ionic 4 beta 3.Capacitor beta 6. 首先 ionic start 工程名 blank --type=angular,问是否集成 ...
- 吴裕雄--天生自然 R语言开发学习:图形初阶(续一)
# ----------------------------------------------------# # R in Action (2nd ed): Chapter 3 # # Gettin ...
- 用数组实现栈(C++)
#include <iostream> //栈的数组实现 using namespace std; #define MAXSIZE 10; template<class T> ...
- POJ 2226 Muddy Fields 二分图(难点在于建图)
题意:给定一个矩阵和它的N行M列,其中有一些地方有水,现在有一些长度任意,宽为1的木板,要求在板不跨越草,用一些木板盖住这些有水的地方,问至少需要几块板子? 思路:首先想到如果没有不准跨越草的条件则跟 ...
- SQL逻辑查询处理顺序特别提醒
我们知道在SQL语句中,第一个被处理的子句式FROM,而不是第一出现的SELECT.这就是SQL不同于其他编程语言的最明显特征之一,以下先看一下SQL查询处理的步骤序号: (8) SELECT (9) ...
- Luogu_1080_国王游戏
题目描述 恰逢H国国庆,国王邀请n位大臣来玩一个有奖游戏.首先,他让每个大臣在左.右手上面分别写下一个整数,国王自己也在左.右手上各写一个整数.然后,让这n位大臣排成一排,国王站在队伍的最前面.排好队 ...
- <JZOJ4269>挑竹签
emm一开始将++cnt敲成cnt++ 就很委屈 一个拓扑排序而已 Description 挑竹签——小时候的游戏 夏夜,早苗和诹访子在月光下玩起了挑竹签这一经典的游戏.挑竹签,就是在桌上摆上一把竹签 ...
- Angular2与Angular1的区别
原文地址: http://www.angularjs.cn/A2Ar 整体上来说,Angular2变得更加简洁,最核心的概念只剩下一个,那就是组件Component,其它所有的一切都是围绕着Compo ...