Plots2: Falha no upload da imagem

Criado em 4 abr. 2021  ·  35Comentários  ·  Fonte: publiclab/plots2

O upload da imagem falha com este erro na seção do corpo "Seção 4" da rota /post
Screenshot from 2021-04-04 03-28-07 isso está em https://publiclab.org/ , foi capaz de replicá-lo em https://unstable.publiclab.org e localmente

Observação: o upload da imagem está funcionando bem na "Seção 2" de /post
Modelo: https://github.com/publiclab/plots2/blob/main/app/views/editor/rich.html.erb

bug help wanted high-priority

Comentários muito úteis

OK, @icarito e eu conseguimos resolver um problema de atualização do yarn para obter o código do editor 3.0.3 real, confirmá-lo e, em seguida, consertamos mais um nginx problema de configuração relacionado ao SSL e agora é trabalhando no site ao vivo. Obrigado a todos!

image

Todos 35 comentários

Também referenciando # 9442 para um pequeno problema.

obrigado @waridrox : +1:

Tentando depurar ainda mais o problema, o erro que recebi ao enviar uma imagem do armazenamento de arquivo local foi
Paperclip::Errors::CommandNotFoundError: Could not run the 'identify' command. Please install ImageMagick.
no ambiente de desenvolvimento local. Acredito que seja uma nova dependência para paperclip gem que lida com uploads de arquivos.

Screenshot 2021-04-04 at 8 13 15 PM

Depois de instalar imagemagick com o comando sudo apt-get install imagemagick ou brew install imagemagick , adicionei essas 2 linhas de código no arquivo development.rb .

Paperclip.options[:image_magick_path] = "/opt/ImageMagick/bin"
Paperclip.options[:command_path] = "/opt/ImageMagick/bin"

Depois disso, eu simplesmente reiniciei o servidor e o upload do arquivo estava funcional novamente com tipos de arquivo como jpeg , png e gif . Aqui está um vislumbre do mesmo -

https://user-images.githubusercontent.com/58583793/113514702-c308e700-958d-11eb-8e12-59c7a9648b24.mp4

De _este thread_ no stackoverflow, precisamos adicionar essas 2 linhas em production.rb também para refletir as alterações no aplicativo de produção.

Também devido ao parâmetro opcional para instalar image-magick em https://github.com/publiclab/plots2/blob/main/doc/PREREQUISITES.md#image -libraries-optional, este comportamento foi observado em primeiro lugar.

Obrigado @waridrox , retirei suas alterações e ainda estou recebendo o erro .... poderia outra pessoa tentar no final

Oh, realmente sinto muito por isso, por favor reverta o puxão então. Funciona localmente? Talvez tentar sudo apt-get update primeiro e depois sudo apt-get install imagemagick possa ajudar ...

Oi pessoal, localmente faz algum sentido que seja um imagemagick, mas (ou ausência de imagemagick), mas no estável deve ser instalado. Eu me pergunto se é um bug distinto no estável? Devemos verificar no Sentry.io. Cess você tem acesso?

Obrigado por encontrar e documentar isso !!

Não estou vendo erros de sentinela no upload de imagens, exceto em relação às fotos de perfil (o que costuma acontecer devido a spam e ataques).

Screenshot_20210404-174638
Screenshot_20210404-174706

Qual é o caminho para o erro? É um erro 500?

Desculpe, quero dizer / recentes / erros

@waridrox não funcionou para mim localmente talvez eu tenha a versão errada .. @jywarren foi mais um erro 302 do meu lado

Screenshot from 2021-04-05 00-54-02

Aha, erro 302 de fato ... 🕵️

Vou ver por que esse pode ser o caso. Obrigada!

Vou tentar executá-lo no GitPod para ver se consigo reproduzir o 302 ...

OK, recebi um log do GitPod!

Started POST "/images" for 10.4.6.182 at 2021-04-13 18:36:40 +0000
Cannot render console from 10.4.0.249! Allowed networks: 127.0.0.1, ::1, 127.0.0.0/127.255.255.255
Processing by ImagesController#create as JSON
  Parameters: {"nid"=>"null", "image"=>{"photo"=>#<ActionDispatch::Http::UploadedFile:0x00007f444ce23c30 @tempfile=#<Tempfile:/tmp/RackMultipart20210413-4879-sla487.jpg>, @original_filename="11aa-love-ryan2-720.jpg", @content_type="image/jpeg", @headers="Content-Disposition: form-data; name=\"image[photo]\"; filename=\"11aa-love-ryan2-720.jpg\"\r\nContent-Type: image/jpeg\r\n">}}
Can't verify CSRF token authenticity.
Redirected to https://3000-aquamarine-bass-qsunlo8p.ws-us03.gitpod.io/login?return_to=/images
Filter chain halted as :require_user rendered or redirected
Completed 302 Found in 2ms (ActiveRecord: 0.0ms)


Started GET "/login?return_to=/images" for 10.4.6.182 at 2021-04-13 18:36:40 +0000
Cannot render console from 10.4.0.249! Allowed networks: 127.0.0.1, ::1, 127.0.0.0/127.255.255.255
Processing by UserSessionsController#new as JSON
  Parameters: {"return_to"=>"/images"}
  User Load (0.5ms)  SELECT  `rusers`.* FROM `rusers` WHERE `rusers`.`id` = 1 LIMIT 1
   (0.2ms)  BEGIN
  User Update (0.5ms)  UPDATE `rusers` SET `last_request_at` = '2021-04-13 18:36:40', `updated_at` = '2021-04-13 18:36:40' WHERE `rusers`.`id` = 1
   (28.6ms)  COMMIT
Redirected to https://localhost/home?return_to=%2Flogin
Filter chain halted as :require_no_user rendered or redirected
Completed 302 Found in 35ms (ActiveRecord: 29.7ms)

OK, então por que estamos sendo redirecionados para fazer login ... procurando ...

Parece que o token CSRF não está funcionando ... vamos ver ...

https://github.com/publiclab/plots2/blob/bd7b2e26c1edbd85a9754d8b25bc27950fd99770/app/views/editor/rich.html.erb#L344 -L347

nós passamos aqui.

$('meta[name="csrf-token"]').attr('content') busca corretamente o token, então não é isso ...

Notando que no GitPod, o uploader de imagem principal funciona. Ele usa o mesmo controlador, então o problema parece estar no próprio código do módulo de rich text do Editor:


Started POST "/images" for 10.4.0.248 at 2021-04-13 18:47:45 +0000
Cannot render console from 10.4.6.181! Allowed networks: 127.0.0.1, ::1, 127.0.0.0/127.255.255.255
Processing by ImagesController#create as JSON
  Parameters: {"authenticity_token"=>"5Z5plBlzFXbu2qCKPTDZYa54DWaNn556hs9FzyvH2U8NDMabePLVh1RlBuhkRR+Ej+kgI/hLIAm9LcdrEZv4lg==", "uid"=>"1", "image"=>{"photo"=>#<ActionDispatch::Http::UploadedFile:0x000055644bef1898 @tempfile=#<Tempfile:/tmp/RackMultipart20210413-5664-bsht8f.jpg>, @original_filename="11aa-love-ryan2-720.jpg", @content_type="image/jpeg", @headers="Content-Disposition: form-data; name=\"image[photo]\"; filename=\"11aa-love-ryan2-720.jpg\"\r\nContent-Type: image/jpeg\r\n">}}

E, na verdade, o carregador de imagem principal também usa o token em sua solicitação:

https://github.com/publiclab/PublicLab.Editor/blob/59e5bf6fd1ac2b6f9108e522baa7cdab36e0bb64/src/modules/PublicLab.MainImageModule.js#L94

Ele o busca corretamente com:

editor.options.mainImageModule.token
"5Z5plBlzFXbu2qCKPTDZYa54DWaNn556hs9FzyvH2U8NDMabePLVh1RlBuhkRR+Ej+kgI/hLIAm9LcdrEZv4lg=="

Confirmado. O upload da imagem principal tem este conjunto de parâmetros na solicitação de formulário:

authenticity_token: 5Z5plBlzFXbu2qCKPTDZYa54DWaNn556hs9FzyvH2U8NDMabePLVh1RlBuhkRR+Ej+kgI/hLIAm9LcdrEZv4lg==
uid: 1
image[photo]: (binary)

Enquanto o upload da imagem inline tem apenas estes:

nid: null
image[photo]: (binary)

verificar as alterações recentes nessa seção do código, bem como as próprias opções do módulo para garantir que ele seja armazenado / passado corretamente do construtor.

Acredito que esse PR de 28 dias atrás possa estar relacionado. a última mudança no branch de woofmark que estamos usando aconteceu em setembro de 2020.

https://github.com/jywarren/woofmark/pull/76/files

Não estou vendo nada no código nas rotas woofmark - 2 agora:

  1. rastreando o parâmetro upload.xhrOptions por meio do Woofmark e confirmando se ele foi obtido corretamente
  2. ver se o módulo xhr npm mudou

https://www.npmjs.com/package/xhr publicado em 2.6 5 meses atrás, mas está em 2.2.1 por muitos meses em nossos projetos. confirmado em package-lock.json

OK, então o upload.xhrOptions param beforeSend chega a woofmark , conforme testado no console JS.

Ele realmente gera o cabeçalho extra?

xhrOptions: { 
        beforeSend: function(xhr) { xhr.setRequestHeader('X-CSRF-Token', $('meta[name="csrf-token"]').attr('content')) }
      },

Puxa, eu não sei quando isso parou de funcionar, mas acho que poderíamos adicionar outro formData param e fazer dessa forma ??? Mas não tem certeza se ele será ignorado pelos outros ou se o xhr lib irá ignorá-lo?

Observar que isso teria acontecido em 5 de novembro de 2020 em https://github.com/publiclab/PublicLab.Editor/releases/tag/v3.0 ou 28 dias atrás em https://github.com/publiclab/plots2/pull/ 9323

De acordo com esta linha, acredito que formData deve ser passado normalmente:

https://github.com/bevacqua/woofmark/pull/44/files#diff -b70752c6e4fb751c6aa381f57afac66c25cc2d401b141b03e1751d81e60efcd2R216

tentará no GitPod:

      formData: {nid: null, authenticity_token: _module.options.token},

... ISSO FEZ:

image

Será corrigido em https://github.com/publiclab/PublicLab.Editor/pull/712 , versão 3.0.3, e também adicionará o token formData extra em https://github.com/publiclab/plots2 / pull / 9504.

Uau!

Feito e confirmado no estábulo!

image

@ publiclab-mimi relatou hoje que

No editor de notas de pesquisa, não consegui carregar um JPEG, PDF ou PNG.
No Google Chrome e no Safari, tanto as opções de arrastar e soltar quanto de navegar

@ebarry , acho que a versão atual ainda não tem as alterações acima devido ao tempo de buffer necessário para enviar as alterações para a versão ao vivo. Isso porque o upload de imagem / arquivo funciona na versão estável e na versão legada.

Screenshot 2021-04-20 at 2 54 03 AM

O novo código foi ao ar ontem à noite! Dando uma olhada, estou vendo um novo erro - um erro 500:

começando com este, que é o mesmo 302 que Cess encontrou:

image

Em seguida, redirecionado para este novo erro 500:

image

que é, na verdade, após um login bem-sucedido, eu acredito, mas é estranho porque já estou logado?

O Sentry registrou aqui, eu acho, mas não tenho certeza se o erro acontece antes ou depois da tentativa de login.

https://sentry.io/share/issue/13e10e65210c4ceb9860ec687482d9b7/

`` `
ActionView :: MissingTemplate
Modelo home / home em falta com {: locale => [: en],: formatações => [: json],: variantes => [],: handlers => [: raw,: erb,: html,: builder,: rubi,: café,: jbuilder]}. Pesquisado em:

  • "/ app / app / views"
  • "/usr/local/bundle/gems/grape-swagger-ui-2.2.8/app/views"
  • "/usr/local/bundle/gems/grape-swagger-rails-0.3.1/app/views"
  • `` `

Huh, tendo problemas para rastrear isso, então vou tentar reproduzir no GitPod novamente ???

OK, @icarito e eu conseguimos resolver um problema de atualização do yarn para obter o código do editor 3.0.3 real, confirmá-lo e, em seguida, consertamos mais um nginx problema de configuração relacionado ao SSL e agora é trabalhando no site ao vivo. Obrigado a todos!

image

: then :: then :: then:

impressionante!!! obrigada

Esta página foi útil?
0 / 5 - 0 avaliações

Questões relacionadas

first-timers[bot] picture first-timers[bot]  ·  3Comentários

grvsachdeva picture grvsachdeva  ·  3Comentários

first-timers[bot] picture first-timers[bot]  ·  3Comentários

keshavsethi picture keshavsethi  ·  3Comentários

RuthNjeri picture RuthNjeri  ·  3Comentários