zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    AHP
    常用积分公式
    关于纸张尺寸和照片尺寸
    学历学位知多少?
    C++ 类型转换的实现
    CDDIS网站下 GNSS 相关的数据产品下载+命名方式解读+文件格式说明文件下载地址
    windows 获取pc信息
    shell 数组操作
    net use远程重启服务器
    获取邮箱使用情况、以及最后一次logon时间
  • 原文地址:https://www.cnblogs.com/zengxm/p/11294438.html
Copyright © 2011-2022 走看看