Problema com upload
20/09/2016 12:16
0
Olá pessoal estou com um problema aparentemente simples, mas mesmo pesquisando vários outros casos(inclusive aqui) as soluções não resolveram, é um upload de arquivo, que implementei conforme código no final deste post, porém o metódo getFile() na action atualiza() está apresentando o erro abaixo:

ERROR StackTrace  - Full Stack Trace:
groovy.lang.MissingMethodException: No signature of method: org.apache.catalina.core.ApplicationHttpRequest.getFile() is applicable for argument types: (java.lang.String) values: [file]
Possible solutions: getXML(), getPart(java.lang.String), getAt(java.lang.String), getAt(java.lang.String), getLocale(), getInfo()


em tese(corrijam se estiver errado), era para o spring injetar no controller a interface MultipartHttpServletRequest, porém acho que não está acontecendo, e por isso o getFile() não é aceito, alguém já passou por isso?



Formulário:

<g:uploadForm controller="produtos" action="atualiza" method="POST">
  <fieldset class="form">
<input type="file" name="arquivo" accept="text/csv"/>
  </fieldset>
  <fieldset class="buttons">
  <g:submitButton name="upload" class="save" value="Upload"/>
  </fieldset>
</g:uploadForm>



Action:

def atualiza() {
  def file = request.getFile('arquivo')
  if(file.empty) {
flash.message = "Arquivo inválido"
  } else {
flash.message = "Arquivo carregado com sucesso "
  }
  redirect (action:'list')
}
Tags: Grails, upload, form, getfile, arquivos, file


0
Olá Francisco,

Tenta isso aqui:

...
import org.springframework.web.multipart.commons.CommonsMultipartFile
import grails.util.Holders
...

grailsApplication = Holders.getGrailsApplication()
CommonsMultipartFile uploadedFile = request.getFile('arquivo')?
...

Dá uma pesquisada sobre estes métodos.

Boa sorte!
20/09/2016 15:23


0
Francisco,

verifica suas dependências no projeto, não deveria ser necessário executar este import ou chamar o grailsApplication. 


0
Pessoal desde já obrigado pelo retorno, então Kico, segui o exemplo no seu livro porém esbarrei nesse problema, mas não fiz nenhuma modificação nas dependências ou config do projeto, rodei um refresh-dependencies na esperança de resolver, mas sem sucesso também, tem alguma ideia de onde poderia verificar o porquê essa dependência não está sendo injetada? Mais uma vez obrigado.
21/09/2016 13:06


0
Qual sua versão do Grails?


0
Estou utilizando a 2.5.4
22/09/2016 10:19


0
Francisco, muito esquisito seu caso.
Pesquisei e encontrei um erro parecido: http://stackoverflow.com/questions/21764419/grails-upload-file-no-signature-for-method-getfile

Dá uma olhada e me diz se funciona.


0
Utilizando
def file = params.nomedoarquivo
no controller, funcionou corretamente, encontrei uma correção que o Graeme Rocher fez para o recurso de upload(segue o link abaixo), porém é para versões do Grails 3+, que não é o meu caso.  Outra maneira que funcionou foi declarando explicitamente o tipo da variável como "MultipartFile" com os devidos imports, uma vez que aparentemente não foi injetado automaticamente:

MultipartFile file = request.getFile('arquivo')


Fix do upload para Grails 3+: https://github.com/grails/grails-core/commit/f7c8ff85dd48e4297ab8c5ec85f4a2712147f300

Vou continuar analisando o problema aqui, mas desde já pela ajuda!
22/09/2016 15:12



Ainda não faz parte da comunidade???

Para se registrar, clique aqui.


Aprenda Groovy e Grails com a Formação itexto!

Newsletter Semana Groovy

Assinar

Envie seu link!


Livro de Grails


/dev/All

Os melhores blogs de TI (e em português) em um único lugar!

 
Creative Commons
RSS Grails Brasil é mantido por itexto Consultoria.
Em caso de problemas contacte Henrique Lobo Weissmann (Kico) por e-mail: kico@itexto.com.br
Todo o conteúdo presente neste site adota o Creative Commons como licença padrão.
Ver: 4.14.0
itexto