Python 未提交字段时,Flask的request.files.getlist for不为空

Python 未提交字段时,Flask的request.files.getlist for不为空,python,flask,form-data,Python,Flask,Form Data,我想通过使用:photos=request.files.getlistphoto获取上传照片的列表。但是,如果我没有在浏览器中选择任何文件,则“照片”值不会像其他字段一样为空 我想通过执行以下操作检查是否未提交任何文件: if not photos: pass 但即使未提交任何文件,也始终存在空的FileStorage对象: request.files.getlist("photo") [<FileStorage: '' ('application/octet-stream')&g

我想通过使用:photos=request.files.getlistphoto获取上传照片的列表。但是,如果我没有在浏览器中选择任何文件,则“照片”值不会像其他字段一样为空

我想通过执行以下操作检查是否未提交任何文件:

if not photos:
   pass
但即使未提交任何文件,也始终存在空的FileStorage对象:

request.files.getlist("photo")
[<FileStorage: '' ('application/octet-stream')>]
为什么在那里?如果列表从不为空,如何检查是否未上载任何文件?

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

如果没有名称,则文件存储将被视为False。Flask WTF认为没有名称的文件存储为空以进行验证

photo=请求.文件[照片] 如果没有照片: 没有照片 照片=请求。文件[photo]。获取列表 如果不是照片或照片中的f不是anyf: 没有照片 request.files由客户端提交的内容填充。不幸的是,即使没有选择文件,浏览器也会提交文件输入,这看起来像一个没有名称和数据的文件。有效的空文件不需要名称或数据,因此由应用程序决定要做什么

如果没有名称,则文件存储将被视为False。Flask WTF认为没有名称的文件存储为空以进行验证

photo=请求.文件[照片] 如果没有照片: 没有照片 照片=请求。文件[photo]。获取列表 如果不是照片或照片中的f不是anyf: 没有照片
关于空文件存储对象,是指如果在提交表单时文件字段为空,并且您得到一个空文件存储对象,并且希望对其进行筛选。您可以应用下面提到的检查

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 objects filename属性类似于field.data.file.filename=,因此我们可以根据此条件对其进行筛选。

关于空文件存储对象,意味着如果提交表单时文件字段为空,而您得到的是空文件存储对象,您可以应用下面提到的检查

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 objects filename属性类似于field.data.file.filename=,因此我们可以根据此条件对其进行筛选