flask 检查用户是否选择了要上传的文件

flask check if user selected a file to upload

我已经检查了 Whosebug 和其他地方以及他们使用 files.filename 来检查文件是否可用的所有地方。如果我这样做,我会收到消息

AttributeError: 'list' object has no attribute 'filename'

我错过了什么吗?或者是否有其他方法来检查用户是否选择了要上传的文件?

我的HTML:

  <form method="POST" enctype="multipart/form-data" action="/upload">
    <label>Choose a problem report file (*.zip).
      <input type="file" name="file[]"  multiple="" accept=".zip">
      <input type="submit" value="Upload problem report(s)">
    </label>  
  </form>

我的python

import flask
from werkzeug.wrappers import request
import os
app = flask.Flask("upload")

UPLOAD_FOLDER = './upload'
app.config['UPLOAD_FOLDER'] = UPLOAD_FOLDER

def get_html(page_name):
    html_file = open(page_name + ".html")
    content = html_file.read()
    html_file.close()
    return content

@app.route("/upload", methods=["POST"])
def upload():
    files = flask.request.files.getlist("file[]")
    if files.filename !='':
        for file in files:
            file.save(os.path.join(app.config['UPLOAD_FOLDER'], file.filename))
    return get_html("index")

这不是我所知道的最好的代码,但如果我不检查文件名,上传就可以了。

应该是这样的:

files = flask.request.files.getlist("file[]")
for file in files:
    if file.filename !='':
        file.save(os.path.join(app.config['UPLOAD_FOLDER'], file.filename))

如错误信息提示,您得到一个列表,而列表没有filename属性,所以您需要检查列表中的项目。