2016-02-08 31 views
0

我试图让文件名和显示,我有以下错误,UnboundLocalError名单之前引用:局部变量“文件名”分配之前引用UnboundLocalError:局部变量“文件名”分配

这里是代码,即时通讯工作,似乎没有正确设置循环。

@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) 

如何解决循环问题?下面前for循环将解决您的问题

+2

这一问题发生时,你在'files'列表 –

回答

3

添加行:

files = request.files.getlist('file[]') 
if not files: 
    return jsonify(error='Please add files') 
for f in files: 
    # for loop body 
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) 
+1

没有项目,如果'allowed_file'的情况下,当缺少处理返回false'返回jsonify(错误=“分机名称错误”)'将被执行,问题文件是虚假的,循环体不执行。 –

+0

是的,真的......修好了,谢谢 – keksnicoh

相关问题