习惯了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. Qt .pro文件详解

    在我们创建Qt工程项目时,Qt Creator总会创建一个.pro文件,我们称.pro文件为Qt的工程管理文件.一个工程项目可以包含一个或多个.pro文件.理解和掌握pro文件的用法,将有利于Qt开发 ...

  2. WEB 安全 - xss 初探

    零.参考资料 网络攻击-XSS攻击详解: 前端安全之XSS攻击: 一.概念 跨站脚本攻击Cross-site scripting (XSS)是一种安全漏洞,攻击者可以利用这种漏洞在网站上注入恶意的客户 ...

  3. [LC] 100. Same Tree

    Given two binary trees, write a function to check if they are the same or not. Two binary trees are ...

  4. 吴裕雄--天生自然 R语言开发学习:基本数据管理

    #---------------------------------------------------------# # R in Action (2nd ed): Chapter 4 # # Ba ...

  5. 从0开始学正则表达式-基于python

    关于正则表达式,当我们了解它就不难,不了解就很难,其实任何事情都是这样,没有人一生下来就啥都会,说白了,每个人都是一个学习了解进步的过程.学习和掌握正则表达式可能并不是太简单,因为它确实是有点像“外星 ...

  6. 码海拾遗:strcpy()、strncpy()和strcpy_s()区别

    1.strcpy() 原型:char *strcpy(char *dst,const char *src) 功能:将以src为首地址的字符串复制到以dst为首地址的字符串,包括'\0'结束符,返回ds ...

  7. 注册免费试用12个月的亚马逊AWS云计算服务

    注册: 注册地址 点击页面中间的创建免费用户,进入下一步页面: 然后就是填写各种个人信息的页面了: 填写付款信息: 付款信息会进行一个电话验证,这里需要先填写对应的电话号码和验证码,然后点立刻呼叫我, ...

  8. AJAX学习小结

    12345678910 $.ajax({ "url":"", //访问路径 "data":"", // 需要传输的数据 ...

  9. docker学习读书笔记-一期-整理

    0.Docker - 第零章:前言 1.Docker - 第一章:Docker简介 2.Docker - 第二章:第一个Docker应用 3.Docker - 第三章:Docker常用命令 4.Doc ...

  10. 这个黑科技iPhone8会用吗?人体传送密码解开锁屏

    ​ 随着现代化信息技术的发展,人们对信息安全也是愈发关注,数据安全始终是个热点和难点.通过WIFI或者蓝牙进行密码传输确实非常方便,但是它已经不再具备安全保障.因此为了解决信息安全的问题,华盛顿大学的 ...