Dúvida sobre o render do MultipartFile
14/02/2013 15:22
0
Pessoal,

Gostaria de saber como posso fazer o render de uma imagem em uma GSP sendo que ele encontra-se em um objeto MultipartFile.

Tenho um form com 3 campos e a possibilidade de upload de imagem.

A situação é a seguinte, image que o usuário deixou de preencher um dos campos do form e que ele já tenha selecionado um arquivo de imagem. Nesse caso meu controller vai validar os campos e retorna-los pre-preenchidos, porem apresentando uma mensagem de erro, mas e a imagem?

Eu não vou armazenar uma imagem sendo que o cadastro é inválido, mas gostaria de "pre-preenche-la" da mesma maneira.

Como faço nesse caso?

Obrigado

Daniel
Tags: Multipartfile, upload, imagem, thumbnail


0
Não vira tentar armazenar a imagem numa pasta temporária?
Acho que é o mais recomendado....

outra forma seria armazenar o arquivo na sessão (não recomendado pq engorda a sessão)


def arquivo = request.getFile('arquivo')

session.arquivo = [
bytes: arquivo.inputStream.bytes,
contentType: arquivo.contentType
]



dae vc adiciona um método:


def image = {
if (!session.arquivo) {
response.sendError(404)
return
}
def arquivo = session.arquivo
//limpando da sessao para nao ficar lixo
session.removeAttribute 'arquivo'

response.setHeader('Cache-Control', 'no-cache')
response.contentType = arquivo.contentType
response.outputStream << arquivo.bytes
response.outputStream.flush()

}



e lá no gsp vc mostra assim:


<img src="${createLink(controller: 'upload', action: 'image')}"/>



esse é um exemplo que tirei daqui

vi esse quando tava mechendo com imagens fazia uma coisa parecida, mas depois comecei a armazenar numa pasta temporaria
14/02/2013 16:42


0
Legal Mussato, eu já implementei o processo com tempFile, mas queria saber uma outra maneira de realizar esse processo.

Fiz meu esquema de arquivo temporário assim:



File temp = File.createTempFile("temp-arq-nome", "extensao");

System.out.println("Temp file : " + temp.getAbsolutePath());


Não quero sobrecarregar a sessão com essa informação.

Muito obrigado,

Daniel Marchena
14/02/2013 18:20


0
Mussatto,

Me explique mais detalhadamente como você fez para pegar o arquivo do diretório temporário e exibilo na GSP.

O caminho que tenho na mão é o absolutePath, ou seja: C:/ASDASD/ASDASD/ASDADAS/DASD/ARQ.JPG

Como chamo esse arquivo na tag <img>?

Grato
06/03/2013 14:35


0
Olha o que eu encontrei: http://stackoverflow.com/questions/10509192/showing-image-with-absolute-path-in-jsp


O problema é tornar esse diretório temporário disponivel para a aplicação.


06/03/2013 14:47


0
minha action do controller (ItemImageController):

def thumbnail(){
String storageDirectory = ConfigService.getTempFolder()
def pic = ItemPhoto.get(params.id)
String fileName = "${storageDirectory}/${pic.thumbnailName}"
File picFileThumbnail = new File(fileName)
if(!picFileThumbnail.exists()){
photoService.createThumbnailFile(fileName, pic)
}

response.contentType = pic.type
response.outputStream << new FileInputStream(picFileThumbnail)
response.outputStream.flush()
}




dae na view eu renderizo assim:

<img src="${createLink(controller:'itemImage', action:'thumbnail', id:item.id)}" />
06/03/2013 19: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