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
属性,所以您需要检查列表中的项目。
我已经检查了 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
属性,所以您需要检查列表中的项目。