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

 

转载于:https://www.cnblogs.com/zengxm/p/11294438.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值