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.
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 😄🥲
Tentei corrigir @rghedin pode testar? https://github.com/manualdousuario/orbita/releases/tag/1.10.4.1
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:
- 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.) - Posts com links e imagens não exibem a imagem. Exemplo.
@rghedin atualizado.
- 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.
- 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:
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.
@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.