【问题标题】:Python - flask and werkzeug - Keep giving "BadRequestKeyError: 400 Bad Request: KeyError: 'file'" [duplicate]Python - 烧瓶和 werkzeug - 继续给出“BadRequestKeyError:400 Bad Request:KeyError:'file'”[重复]
【发布时间】:2019-01-29 10:12:05
【问题描述】:

我第一次尝试用python上传文件,我尝试使用flask和werkzeug库,这是我的代码:

这里我正在创建上传文件的函数:

@app.route('/upload')
def upload_file():
    return render_template('load.html')

@app.route('/uploader', methods=['GET','POST'])
@login_required(must=[be_admin, have_approval])
def uploaderV():
    if request.method == 'POST':
       file = request.files['file']
       if file:
          filename = secure_filename(file.filename)
          file.save(os.path.join(app.config['UPLOAD_FOLDER'],filename))
          return 'file uploaded'
    return render_template('load.html')

这是我的 load.html 页面:

{% extends 'base.html' %}
{% block title %}Secret{% endblock %}
{% block page_body %}
     <div class="row">
          <form action="{{ url_for('uploaderV') }}" method="POST" enctype="multipart/form-data">
               <p>
                   <input type='file' name='file[]' multiple=''>
                   <input type="submit" value="Upload">
               </p>
          </form>
     </div>
{% endblock %}

每次我尝试上传文件时,服务器都会给我
werkzeug.exceptions.BadRequestKeyError BadRequestKeyError: 400 错误请求: KeyError: 'file'
我尝试了不同的方式,现在我真的不知道该怎么办。

【问题讨论】:

  • file = request.files['file']这一行改为file = request.files.get('file')

标签: python flask http-status-code-400 werkzeug


【解决方案1】:

您输入的名称是 file[],而不是 file。尝试类似:

   file = request.files['file[]']

或者只是将您的输入名称更改为file

【讨论】:

  • 非常感谢,现在我没有 400 错误,它没有在我的目录中保存任何文件但错误消失了
  • 我不知道为什么会这样,它在一个非常简单的例子中对我有用。
  • 也许我以错误的方式设置了 UPLOAD_FOLDER UPLOAD_FOLDER = '/tmp' app.config['UPLOAD_FOLDER'] = UPLOAD_FOLDER
  • 解决了,非常感谢,我试图将文件保存在可移动设备上,保存在本地文件夹中
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-11-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-11-14
相关资源
最近更新 更多