我试图获取文件名并显示列表,我遇到以下错误: UnboundLocalError:local variable' filename'在分配前引用
这是代码,我正在处理,似乎循环没有正确设置。
@media.route('/uploadajax', methods=['POST'])
def upldfile():
if request.method == 'POST':
files = request.files.getlist('file[]')
for f in files:
if f and allowed_file(f.filename):
filename = secure_filename(f.filename)
updir = os.path.join(basedir, 'upload/')
f.save(os.path.join(updir, filename))
file_size = os.path.getsize(os.path.join(updir, filename))
else:
app.logger.info('ext name error')
return jsonify(error='ext name error')
return jsonify(name=filename, size=file_size)
如何解决循环问题?
答案 0 :(得分:3)
在for
循环之前添加以下行可以解决您的问题:
files = request.files.getlist('file[]')
if not files:
return jsonify(error='Please add files')
for f in files:
# for loop body
答案 1 :(得分:1)
正如在回答@Andriy Ivaneyko时所看到的,问题是你这里可能有一个空的文件列表。您可以创建一个包含验证结果的列表,以在前端启用详细的错误报告。
@media.route('/uploadajax', methods=['POST'])
def upldfile():
if request.method == 'POST':
files = request.files.getlist('file[]')
my_json_stuff = []
for f in files:
if f and allowed_file(f.filename):
filename = secure_filename(f.filename)
updir = os.path.join(basedir, 'upload/')
f.save(os.path.join(updir, filename))
file_size = os.path.getsize(os.path.join(updir, filename))
my_json_stuff.append({'name': filename, 'size': file_size})
else:
app.logger.info('ext name error')
my_json_stuff.append({'error': 'ext name error'})
return jsonify(my_json_stuff)