Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

[Dúvida] Erro na hora de salvar a imagem

Olá! Quando vou em editar e escolho mudar a imagem, a nova imagem aparece normalmente, mas quando tento salvar tenho o seguinte erro:

raise exceptions.BadRequestKeyError(key) flask.debughelpers.DebugFilesKeyError: You tried to access the file 'arquivo' in the request.files dictionary but it does not exist. The mimetype for the request is 'application/x-www-form-urlencoded' instead of 'multipart/form-data' which means that no file contents were transmitted. To fix this error you should provide enctype="multipart/form-data" in your form.

Meu @app.route está da seguinte forma:

@app.route('/atualizar', methods=['POST',])
def atualizar():
    jogo = Jogos.query.filter_by(id=request.form['id']).first()
    jogo.nome = request.form['nome']
    jogo.categoria = request.form['categoria']
    jogo.console = request.form['console']

    db.session.add(jogo)
    db.session.commit()

    arquivo = request.files['arquivo']
    upload_patch = app.config['UPLOAD_PATH']
    arquivo.save(f'{upload_patch}/capa{jogo.id}.jpg')

    return redirect(url_for('index'))

E meu "figure" do arquivo editar.html está da seguinte forma:

<figure class="img-thumbnail col-md-4">
          <img class="img-fluid" src="{{ url_for('imagem', nome_arquivo=capa_jogo) }}">
          <figcaption>
            <label class="fileContainer">
              Mudar Capa
              <input type="file" name="arquivo" accept=".jpg">
            </label>
          </figcaption>
        </figure>
1 resposta
solução!

Olá, consegui achar o erro.

No arquivo editar.html, na tag

eu não tinha colocado o enctype, o codigo da forma correta ficou assim:
<form action="{{ url_for('atualizar') }}" method="post" enctype="multipart/form-data">

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software