Flask多文件上传校验是否选文件报AttributeError如何解决
错误原因
你触发报错的核心原因是 flask.request.files.getlist("file[]") 返回的是所有上传文件对象组成的Python列表,列表本身没有filename属性。你查到的通用教程对应的是「单文件上传」场景,单文件上传时使用request.files.get("文件名")获取到的是单个文件对象,才有filename属性,和你当前开启multiple的多文件上传场景不匹配。
正确校验方式
多文件上传场景分两步校验即可:
- 先判断文件列表是否为空,确认用户有没有选择文件
- 遍历文件列表时,逐个校验单个文件的
filename是否合法,避免无效空文件
修改后的代码示例
你只需要调整upload路由的逻辑即可:
@app.route("/upload", methods=["POST"]) def upload(): files = flask.request.files.getlist("file[]") # 列表为空说明用户未选择任何文件 if not files: # 此处可自行添加无文件上传的提示逻辑 return get_html("index") # 遍历逐个校验+保存 for file in files: if file.filename != '': # 可选优化:提前判断上传目录是否存在,避免路径不存在报错 os.makedirs(app.config['UPLOAD_FOLDER'], exist_ok=True) file.save(os.path.join(app.config['UPLOAD_FOLDER'], file.filename)) return get_html("index")
内容的提问来源于stack exchange,提问作者Terredar
相关产品推荐
相关产品推荐

