2016-02-08 101 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

相關問題