Upload de Arquivo
30/01/2009 00:00
0
Pessoal

Estou fazendo uns testes de upload de arquivo, usei o código que está aqui: http://grails.org/File+Upload.

3 Perguntas:

1 - Tentei fazer o upload de um arquivo pdf, com uns 590KB, o arquivo foi copiado, mas a máquina começou a apitar e não parou (hahahahaha). Alguém sabe o pq? Qual o tamanho máximo que consigo enviar?

2 - Existe uma melhor forma de fazer do que essa? Considerando que NÃO quero gravar os arquivos no banco.

3 - Como faço para permitir que apenas arquivos PDF ou JPG sejam carregados?


Obrigado
Tags: Grails


0
Retirado do livro Beginning Groovy and Grails - from Novice to Professional:

Esse exemplo armazena o arquivo no banco de dados, mas você pode alterar o seu controller para armazenar em um arquivo.

Classe de dominio:

class Todo {
. . .
byte[] associatedFile
String fileName
String contentType
. . .
}


Arquivo .gsp com o formulário de upload:

<tr class='prop'>
<td valign='top' class='name'><label for='dueDate'>File&#58;</label></td>
<td valign='top'
class='value $&#123;hasErrors(bean&#58;todo,field&#58;'asociatedFile','errors')&#125;'>
<input type=&quot;file&quot; name=&quot;asociatedFile&quot; />
</td>
</tr>


conf/spring/resources.xml: (se você quiser configurar o tamanho máximo do arquivo)

<bean class=&quot;org.springframework.web.multipart.commons.CommonsMultipartResolver&quot;>
<property name=&quot;maxUploadSize&quot;><value>1000000</value></property>
</bean>


Controller:

import org.springframework.web.multipart.MultipartHttpServletRequest;
import org.springframework.web.multipart.commons.CommonsMultipartFile;
. . .
def uploadFileData = &#123; todo ->
if (request instanceof MultipartHttpServletRequest) &#123;
MultipartHttpServletRequest multiRequest
= (MultipartHttpServletRequest)request;
CommonsMultipartFile file =
(CommonsMultipartFile)multiRequest.getFile(&quot;associatedFile&quot;);
// Save the object items.
todo.fileName = file.originalFilename
todo.contentType = file.contentType
todo.associatedFile = file.bytes
&#125;
&#125;


Para permitir que apenas arquivos PDF ou JPG veja o conteudo de file.contentType.

Espero ter ajudado...
23/02/2009 00:00


0
ok fiz aqui o teu exemplo e deu certo como faço para imprimir a imagem em outra tela ou na mesma tela


Valeu T+
03/03/2009 00:00



0
Estou muito grato Rodrigo.
Valeu.


[quote=&quot;rodrigo.assuncao&quot;]eu nunca fiz isso, mas fazendo uma busca rápida no Google, encontrei essas 2 paginas:

http&#58;//stackoverflow.com/questions/259320/how-to-display-image-in-grails-gsp

http&#58;//fbflex.wordpress.com/2008/04/22/image-uploading-in-grails-with-5-lines-of-code/

Espero que ajude...[/quote]
20/05/2009 00:00


0
Estou tentando fazer um upload de arquivo para poder gravar em outra pasta.
Fiz como a documentação explica e como muitas pessoas explicaram na net, porém não consegui.

Estou trabalhando com Grails 1.3.7
segue o emu código:
GSP (coloquei aqui somente o trecho que interessa:

<g:form action="enviarFormulario" method="post" enctype="multipart/form-data">
<input type="file" name="arqTest" id="arqTest" />
<input type="submit" id="enviar" name="enviar" value="Enviar Arquivo"/>
</g:form>


Controller:

def upload(params) {
String result
if (request instanceof MultipartHttpServletRequest) {
def arquivo = request.getFile("arqTest")
if (!arquivo.isEmpty) {
result = service.enviaArquivo(arquivo, "arqTest.txt", "D:\Projetos\GIOp\EE\MalhaGas\MalhaGas\grails-app\arquivos")
} else {
println "arquivo não pode ser vazio"
response.sendError(200, 'Pronto')
return
}
}
}


O request vem como HttpServletRequest e não como MultipartHttpServletRequest.
Já tentei fazer o seguinte:

MultipartHttpServletRequest meuRequest = (MultipartHttpServletRequest)request

Mas me dá um erro de cast. Cannot cast object org........ApplicationServletRequest to MultipartHttpServletRequest

eu vi que na versão 1.0 tem um bug no Jira que o request não chega realmente no controller como MultipartHttpservletRequest, somente como HttpServletRequest.

alguém poderia me ajudar ?

Muito obrigado,

Edson Soares
16/02/2012 19:02


0
Opá malz sair um pouco do foco de resolver teu problema..
mas eh sobre o request.getFile('nomeArquivo').. também..

eu fiz assim:

def importar(){
if(request instanceof MultipartHttpServletRequest)
{
MultipartHttpServletRequest mpr = (MultipartHttpServletRequest)request;
CommonsMultipartFile f = (CommonsMultipartFile) mpr.getFile("doc1");
if(!f.empty)
render "success" + f.size
else
render "empty"
}
else{
render "fail"
}
}


<g:uploadForm name="myForm" action="importar" method="post" enctype="multipart/form-data">
<input type="file" name="doc1" value=""/>
<g:actionSubmit value="Importar"/>
</g:uploadForm>


Funciona!... ( no run-app)

Porem alguem sabe me dizer o porque não funciona depois que publico o .war no GlassFish...
O erro diz que não existe (f.empty) - empty .. por que está NULL... sinistro..

Obrigado.



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