Identificar mime types do arquivo após upload
16/02/2017 10:36
0
Olá pessoal, preciso restringir os tipos de arquivos que podem ser carregados em um upload, porém quero fazer no lado do servidor, nada de javascript, nem "accept" no formulário de upload, utilizei o método getContentType() no arquivo carregado, funciona muito bem quando utilizamos navegadores em linux, porém no windows, o firefox, chrome e IE, retornam somente "application/octet-stream" ou seja, não identificam o mime type, li em alguns fóruns que é pq nesses casos a informação não vai no Header e tal, qual recurso vcs para esses casos? Tem algo mais groovy pra isso? Vlw.
Tags: Grails, mime types, mime, extensão, formato, upload, validação


0
Francisco, não cheguei a validar. Dá uma olhada nesse link: http://stackoverflow.com/questions/5019478/grails-file-upload-how-to-recognize-file-and-or-content-type


0
Olá Leandro, já havia visto esse post, e como disseram nos comentários, nem todos os browsers suportam a solução apresentada lá no stack, o contentType() funcionou aqui em ambiente linux, mas no windows ele retorna apenas "application/octet-stream", mas vlw pela ajuda!
16/02/2017 18:32


0
Francisco,

Segue trecho de código que testei aqui e funcionou
def file = request.getFile('file')
FileNameMap fileNameMap = URLConnection.getFileNameMap();
def contentType = fileNameMap.getContentTypeFor(file.originalFilename)


0
Olá Leandro, testei aqui e realmente ele identificou tanto em ambiente linux e windows e entre navegadores, porém ele tem a mesma falha que identifiquei em outras funções, se vc pegar um arquivo .doc, por exemplo, e renomeá-lo com a extensão .csv, ele passa pela validação. Encontrei o Apache Tika (http://tika.apache.org/1.14/detection.html) e nos meus testes iniciais ele funcionou 100%, inclusive nos casos em que se troca a extensão do arquivo, ele identificou corretamente qual era o mime type, o único porém é que o Tika é uma bazuca pra matar formiga, rsrs, ele tem muuuuuitos recursos, até extrair metadados de pdf e por aí vai, com isso o tamanho dele dá uns 50mb, tentei extrair só a parte do "detection" e fechar novamente em um .jar, mas falta alguns detalhes, com isso ele vai ficar bem menor, mas recomendo assim msm. Vlw pela ajuda Leandro!
02/03/2017 09:24



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