1
resposta

ERRO na edição de arquivos sem alteração de imagem

Prezados, percebi que quando na tela de edição, nós salvamos sem fazer nenhuma alteração de imagem, o sistema gera uma imagem nova jpg, mas de conteúdo vazio. Com isso quando na tela de lista clicamos em editar para esse mesmo jogo, a imagem aparece com erro. Me parece que o erro acontece porque o sistema não carrega a imagem atual para renomear, mas apenas cria um arquivo com o nome atualizado.

1 resposta

Oi Daniel, como você está? Espero que esteja bem ^-^

Ótima observação! Isso realmente acontece. Para evitar esse erro, podemos verificar se ao fazer uma edição o arquivo de imagem foi alterado ou não. Por padrão, o request.files['arquivo'] irá nos retornar uma string vazia caso não modifiquemos a imagem e caso a imagem seja alterada ele irá nos retornar o nome daquela imagem.

Na rota de atualizar podemos fazer essa verificação:

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

    arquivo = request.files['arquivo']
    if arquivo:
        upload_path = app.config['UPLOAD_PATH']
        timestamp = time.time()
        deleta_arquivo(jogo.id)
        arquivo.save(f'{upload_path}/capa{jogo.id}-{timestamp}.jpg')
    jogo_dao.salvar(jogo)
    return redirect(url_for('index'))

Este if é para dizer: se há algo na variável arquivo faça os procedimentos para salvar a nova imagem e caso não tenha, salve apenas o jogo e não modifique a imagem.

Qualquer dúvida estou por aqui. Bons estudos!