manualdousuario/orbita

Envio de imagens não está funcionando

Closed this issue · 33 comments

@altendorfme, deu ruim 😬 Quando tento enviar uma imagem, aparece a mensagem de erro, mas o post vai ao ar mesmo assim, sem a imagem anexada.

Sem Título

Tentei com duas imagens *.jpg, uma de 2,6 MB e outra de 600 KB. Deu o mesmo erro com ambas.

Fiquei meio eufórico e subi em produção sem testar antes. Como paliativo, removi o campo de envio de imagens direto no orbita.php até resolvermos isso.

@rghedin foram varias correções, está na branch: https://github.com/manualdousuario/orbita/tree/issue-122

Primeiro ele valida o tamanho e extensão, e isso tem que acontecer antes e criar o post, se tiver tudo certo apos a criação do post ele faz o processamento da imagem e registra ela no id post novo.

Hmm, esse branch ainda não foi commitado, né? Então subi o plugin sem. Consegue fazer o commit aí? @gabrnunes, fique atento para gerar a nova versão (agora sim, 1.10.2 😄), por favor.

@rghedin foi commitada nessa branch pra dar aquela testada em staging

Se tiver tudo certo eu faço a PR e o @gabrnunes aprova o merge

eita, acabei não vendo esse último comentário e já fiz o merge aqui com o PR. A versão tá gerada @rghedin @altendorfme

Sem problema, @gabrnunes. Vou testar agora a 1.10.3 no staging e volto para relatar se funcionou.

Aparentemente, tudo funcionando bem! Subi uma imagem de 9,5 MB, ele aceitou, redimensionou e aplicou a otimização, e caiu para ~230 KB.

Depois tentei subir uma imagem de 24,5 MB. Parece que o Órbita aceita o upload e só depois dá a mensagem de erro. Funcionou como o esperado, com a mensagem de erro e sem salvar a imagem no servidor.

Vou subir em produção. Obrigado pelo esforço, @altendorfme @gabrnunes ❤️

@rghedin sim, a validação é no backend pós upload, antes de processar ele faz tudo em temporario. Só após validar e converter que salva nos uploads do WP

Mas dá pra fazer uma validação pré por javascript também.

Podemos pensar nessa validação local no futuro, @altendorfme. Meu receio é que alguém em uma conexão ruim sofra para fazer upload e, no fim, dá de cara com a mensagem de erro. Faz sentido?

Agora estamos com o problema contrário: posts sem imagens não vão 😄🥲

Obrigado, @gabrnunes, mas não rolou. Dá um erro fatal quando tento ativar a versão 1.10.4.1 do plugin:

Não foi possível ativar o plugin porque ele gerou um erro fatal.

Maldição, já vou testar certinho.

Ainda está dando “O formato da imagem enviada é inválido” quando tento postar sem imagem ☹️

Será que o problema não está neste if (linha 919)?

if( $extension == null ) {
	wp_redirect('/orbita/postar/?orbita_error=invalid_format');
	die;
}

Pelo que entendi, ele redireciona à página de erro não encontrar um anexo em formato compatível, mas está redirecionando também caso não encontre nenhum anexo. Somente posts com anexo nos formatos compatíveis passam.

Não é pra ser ai o problema não, o problema é que ele tá passando ali no primeiro IF. Eu não consigo testar aqui pq não tenho o projeto rodando, dai fiz uma tentativa. Vamos esperar o @altendorfme tentar uma alternativa haha

Fiz uma regressão no plugin em produção enquanto não resolvemos isso. Voltei a versão anterior (1.10.3) e removi o campo de envio de imagem.

@rghedin atualizei a branch de teste (https://github.com/manualdousuario/orbita/tree/issue-122), pode validar novamente.
Se funcionar me avisa que já emendamos um validador de tamanho por JS antes de liberar para produção

Obrigado, @altendorfme!

Subi a versão do branch de teste. Resolveu o problema que tínhamos! Porém, detectei dois outros, que listo com exemplos:

  1. Quando uma imagem com menos de 1200px de largura é enviada, parece que o plugin age nela e a redimensiona mesmo assim. Aqui um exemplo e, a título de comparação, o original da imagem que enviei. Talvez isso se resolva com uma verificação para aplicar o redimensionamento apenas se a imagem enviada tiver menos de 1200px de largura? (A conversão em *.jpg e otimização em 80% ficam mantidas para todas.)
  2. Posts com links e imagens não exibem a imagem. Exemplo.

@rghedin atualizado.

  1. Agora ele tá fazendo calculo por ratio, a ideia é que tanto largura ou altura não possam passar de 1200px, não sei se era esse seu pensamento também. Até dá pra definir limites diferentes.
  2. Quando tem link externo está aparecendo imagem, menos quando tem oembed.

Aparentemente o redimensionamento está funcionando bem, @altendorfme. Acho que está bem deixar os limites em 1200px nos dois eixos.

Ocorreu-me uma situação aqui, fiz o teste e deu problema: quando é feito o envio de uma imagem menor que os limites máximos. Veja um exemplo (essa imagem tem 512x512px). Colocar um if para só redimensionar se a imagem tiver +1200px em qualquer sentido deve mitigá-lo.

Sobre links externos com imagens, será que dá para colocar uma condicional no formulário para ocultar o campo do link quando uma imagem for carregada e ocultar o campo da imagem quando houver um link? Aí não gera a quebra de expectativa que eu experimentei (e que, imagino, o usuário também teria).

Foi!

Se for menor que 1200px irá apenas converter para jpg

Ao preencher a URL some a imagem, se preencher a imagem some a URL
Se limpar os campos os dois aparecem

E adicionei um alert caso o arquivo tenha mais de 10 MB, ao confirmar ele já remove o arquivo selecionado
Alert é uma solução bem simples, mas não achei um componente ou estilo especifico para erro em formulários

@altendorfme, as imagens pequenas foram corrigidas. Boa! (Só a borda da dez_thumbnail() que pega toda a largura da coluna (exemplo), mas creio que isso seja um problema de CSS do tema Dez.)

De resto, funcionou tudo — alerta de imagem de +10 MB com popup e os campos mutuamente excludentes de link e imagem.

Acho que já dá para subir o PR e correr para o abraço!

Tenta substituir no css onde provavelmente tem um display: block; para display: inline-block;

Melhor até era trocar a borda para o img
No CSS de .post-thumbnail, a.post-thumbnail img para .post-thumbnail img, assim se quiser centralizar a imagem pode controlar no .post-thumbnail com flex por exemplo

@gabrnunes funcionou!

@altendorfme eu tinha tentado colocar a borda na img, mas por algum motivo a imagem fica “pontuda” nesse cenário:

image

O inline-block sugerido pelo @gabrnunes resolve o problema.

Issue resolvida, né? Se notar algo errado, reabro. Obrigado, gente!

@rghedin ah, verdade!
Vou abrir a PR então

Ahnn, achei que todas as mudanças já estavam publicadas. O que tem na 1.10.15, @gabrnunes?

@gabrnunes @rghedin falha minha, não tinha visto o merge.
De qualquer forma fica formalizada a PR

A saga continua 🥲

Deu ruim com esta imagem.

Troquei toda a logica, quando da muito problema seguida a base já ta ruim!

Pra facilitar eu gerei tamanhos de imagens variados, com todos esses funcionou certo:

1300x1000
1300x1300
1000x1000
1000x1300

Se precisar gerar mais é só usar o https://placehold.co/1300x1300/jpg

Deu bom!.

@gabrnunes, gera o release? (Quando for assim, aliás, é recomendável que eu espere o release ou posso subir o arquivo do branch com a correção direto em produção?)

Feito!

Sobre a recomendação acho que é sempre bom esperar a release pra manter tudo atualizadinho.