request.files.getlist

from flask import Flask, request

uploaded_files = request.files.getlist("fileList")
    for file in uploaded_files:
        filename = file.filename
        content = file.stream
        files_contents[filename] = content

    print(f"file contents: {list(files_contents.keys()).remove('')}")

    emsg = "Files count: " + str(len(files_contents.keys()))

在获取文件时,发现即使取消上传即未选中任何文件 通过len(uploaded_files) 也会返回1. 如果选中文件,则显示正确。就其原因找到:

request.files将填充客户端提交的所有内容。不幸的是,即使没有选择文件,浏览器也会提交文件输入,这看起来像是一个没有名称和数据的文件。名称或数据都不需要有效的空文件,因此它留给应用程序来决定要做什么。

如果FileStorage没有名称,它将被视为False。Flask-WTF认为没有名称的FileStorage为空以进行验证。

photo = request.files["photo"]

if not photo:
    # no photo
photos = request.files["photo"].getlist()

if not photos or not any(f for f in photos):
    # no photos

Gaurav Yadav回答于 2020-07-24

关于空文件存储对象,意味着如果提交表单时文件字段为空,并且您得到一个空的文件存储对象,并且想要过滤it.you可以应用下面提到的检查。

if not (all(isinstance(item, FileStorage) for item in field.data) and 
         field.data and all((item.filename != '') for item in field.data)):
        return

对于没有上传的文件,FileStorage对象的filename属性类似于field.data.file.filename = '',所以我们可以根据这个条件进行过滤。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值