习惯了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学习笔记 多文件上传的更多相关文章

  1. Django:学习笔记(8)——文件上传

    Django:学习笔记(8)——文件上传 文件上传前端处理 本模块使用到的前端Ajax库为Axio,其地址为GitHub官网. 关于文件上传 上传文件就是把客户端的文件发送给服务器端. 在常见情况(不 ...

  2. SpringMVC:学习笔记(8)——文件上传

    SpringMVC--文件上传 说明: 文件上传的途径 文件上传主要有两种方式: 1.使用Apache Commons FileUpload元件. 2.利用Servlet3.0及其更高版本的内置支持. ...

  3. springmvc学习笔记--支持文件上传和阿里云OSS API简介

    前言: Web开发中图片上传的功能很常见, 本篇博客来讲述下springmvc如何实现图片上传的功能. 主要讲述依赖包引入, 配置项, 本地存储和云存储方案(阿里云的OSS服务). 铺垫: 文件上传是 ...

  4. Javaweb学习笔记10—文件上传与下载

    今天来讲javaweb的第10阶段学习.文件的上传与下载,今天主要说的是这个功能的实现,不用说了,听名字就是外行人也知道肯定很重要啦. 老规矩,首先先用一张思维导图来展现今天的博客内容.       ...

  5. Struts2学习笔记(十一)——文件上传

    1.单文件上传 单文件上传步骤: 1)创建上传jsp页面 文件上传的表单提交方式必须是POST方式,编码类型:enctype="multipart/form-data",默认是 a ...

  6. go web 第二天 学习笔记之文件上传

    package main import ( "crypto/md5" "fmt" "html/template" "io" ...

  7. SpringMVC学习笔记八:文件上传及多个文件上传

    SpringMVC实现文件上传需要加入jar包,commons-fileupload-1.3.1.jar,commons-io-2.2.jar 项目目录树: pom.xml加入需要的包 <pro ...

  8. Laravel 学习笔记之文件上传

    自定义添加磁盘——upload 位置:config/filesystems.php 'disks' => [ 'local' => [ 'driver' => 'local', 'r ...

  9. java学习笔记 (6) —— 文件上传

    1.新建upload.jsp <%@ page language="java" import="java.util.*" pageEncoding=&qu ...

随机推荐

  1. 吴裕雄--天生自然python学习笔记:python用 Selenium 组件实现浏览器操作自动化

    一般情况下,我们都是用手工操作的方式来对浏览器进行各种操作 . 实际上, 只要我们安装一个自动化操作组件, Python 就可以让我们的很多操作实现自动化 . Selenium 组件 在开发网页时,用 ...

  2. Java生成随机图片验证码

    前台html代码 [Java] 纯文本查看 复制代码 ? 01 02 03 04 05 06 07 08 09 10 <div style="margin-top: 50px;&quo ...

  3. python数据类型:字符串

    字符串是python中最常见的数据类型,使用单引号或双引号创建字符串 python不支持单字符类型,单字符在python中也是字符串 文档原文:http://www.runoob.com/python ...

  4. mudbox安装未完成,某些产品无法安装的解决方法

    mudbox提示安装未完成,某些产品无法安装该怎样解决呢?,一些朋友在win7或者win10系统下安装mudbox失败提示mudbox安装未完成,某些产品无法安装,也有时候想重新安装mudbox的时候 ...

  5. vue日常问题总结

    1.Vue项目启动后首页URL带的#该怎么去掉? vue-router中默认使用的是hash模式,URL中带有#号,我们可以用如下代码修改成history模式: import Vue from 'vu ...

  6. 发现日志文件和打印在eclipse控制台中的编码不一致

    发现日志文件和打印在eclipse控制台中的编码不一致,正好相反. 日志文件是用notepad打开的,notepad有自己的编码方式,查询编码为utf-8,日志文件汉字等等显示正常. 但是在eclip ...

  7. (三)mybatis级联的实现

    mybatis级联的实现 开篇         级联有三种对应关系: 1.一对一(association):如学号与学生  2.一对多(collection):如角色与用户  3.多对多(discri ...

  8. numpy创建的array

    import numpy as np array = np.array([[1,2,3], [2,3,4]]) #打印列表 print(array)#是几维的 print('number of dim ...

  9. Jekyll的_config文件配置报错

    8 April 2019 by IchiehPan Jekyll 搭建博客时, 修改完_config.yml文件后就收到了github的build error邮件. 大致内容如下: did not f ...

  10. Oracle Compute云快速搭建MySQL Keepalived高可用架构

    最近有个客户在测试Oracle Compute云,他们的应用需要使用MySQL数据库,由于是企业级应用一定要考虑高可用架构,因此有需求要在Oracle Compute云上搭建MySQL高可用集群.客户 ...