Upload de Imagem - Vraptor 2.5

2 respostas
B

Olá Pessoal,

Estou com problemas no upload de imagens com a versão 2.5 do vraptor.
Será que alguém poderia me ajudar?

O projeto é um sistema web de uma imobiliária, cada imóvel pode conter 10 fotos. Após salvar as fotos… as imagens ficam zuadas com uma faixa cinza.
Tentei procurar alguma referencia mas não encontrei nda, vi que agora tem a nova versão do vraptor 3, tem algo novo nesse sentido?
Alguma idéia que eu possa implementar?
Eu tentei usar o tipo FileItem no parametro, mas o framework não aceita, o campo fica nulo.
Estou utilizando da seguinte maneira:

@InterceptedBy( { DaoInterceptor.class, MultipartRequestInterceptor.class })
public class ImovelLogic {

.
.
.

@In(required=false)
private UploadedFileInformation foto1;


public void adiciona
 if(foto1 != null){
        processaFoto(foto1);
 }



private void processaFoto(UploadedFileInformation u){
    File file = u.getFile();
    String pasta = new SimpleDateFormat("ddMMyyyyHHmmss").format(new Date());
String path = "D:\\Fotos\\"+pasta;

    UploadFile upFile = new UploadFile(); 
    try { 
        upFile.uploadFile(file, path); 
    } catch (FileUploadException e) { 
        log.error(e);
    }    
}

.
.
.

}

package br.com.imobiliaria.util;

import java.io.BufferedInputStream;

import java.io.BufferedOutputStream;

import java.io.File;

import java.io.FileInputStream;

import java.io.FileOutputStream;

import java.io.IOException;

import java.io.InputStream;

import java.io.OutputStream;
import org.apache.commons.fileupload.FileUploadException;

import org.apache.commons.io.IOUtils;

import org.apache.log4j.Logger;

public class UploadFile{

Logger log = Logger.getLogger(UploadFile.class);
 
public void uploadFile(File file, String path) throws FileUploadException{ 
    try{ 
        File uploadedFile = file; 
        String separetedSO = "/";
        String completePath = path+separetedSO+file.getName()+".jpg";
       
        File dir = new File(path);
        if(!dir.exists()){
            dir.mkdirs();
        }
       
        InputStream input = new BufferedInputStream(new FileInputStream( 
                uploadedFile)); 
        OutputStream output = new BufferedOutputStream(new FileOutputStream( 
                new File(completePath))); 
         
         
        IOUtils.copy(input,output);
       
        //Cria um novo File que representa o thumbnail
        String nomeThumbnail = file.getName()+"_thumbnail.jpg";
        File thumbnail = new File(dir+separetedSO, nomeThumbnail);
        try {
            thumbnail.createNewFile();
        } catch (IOException e) {
            log.error("Erro ao tentar criar a imagem de Thumbnail" + e);
        }
       
        //Faz uma cópia da imagem upada
        CopiaArquivos copiaArquivo = new CopiaArquivos();
        copiaArquivo.copia(file, thumbnail);
       
        //A imagem copiada será reduzida para se tornar o thumbnail
        Miniatura miniatura = new Miniatura(dir+separetedSO, nomeThumbnail);
        miniatura.iniciar();
         
    }catch(Exception ex){ 
        ex.printStackTrace(); 
    }        
}

}

2 Respostas

nathanpc
Antes de tudo, sempre coloque os códigos entre code tags: [ code ] e [ /code ], sem os espaços, mas o código que você forneceu no seu post é esse com as code tags:
@InterceptedBy( { DaoInterceptor.class, MultipartRequestInterceptor.class }) 
public class ImovelLogic { 

. 
. 
. 

@In(required=false) 
private UploadedFileInformation foto1; 


public void adiciona 
if(foto1 != null){ 
processaFoto(foto1); 
} 



private void processaFoto(UploadedFileInformation u){ 
File file = u.getFile(); 
String pasta = new SimpleDateFormat("ddMMyyyyHHmmss").format(new Date()); 
String path = "D:\\Fotos\\"+pasta; 

UploadFile upFile = new UploadFile(); 
try { 
upFile.uploadFile(file, path); 
} catch (FileUploadException e) { 
log.error(e); 
} 
} 

. 
. 
. 
} 



package br.com.imobiliaria.util; 
import java.io.BufferedInputStream; 
import java.io.BufferedOutputStream; 
import java.io.File; 
import java.io.FileInputStream; 
import java.io.FileOutputStream; 
import java.io.IOException; 
import java.io.InputStream; 
import java.io.OutputStream; 

import org.apache.commons.fileupload.FileUploadException; 
import org.apache.commons.io.IOUtils; 
import org.apache.log4j.Logger; 

public class UploadFile{ 

Logger log = Logger.getLogger(UploadFile.class); 

public void uploadFile(File file, String path) throws FileUploadException{ 
try{ 
File uploadedFile = file; 
String separetedSO = "/"; 
String completePath = path+separetedSO+file.getName()+".jpg"; 

File dir = new File(path); 
if(!dir.exists()){ 
dir.mkdirs(); 
} 

InputStream input = new BufferedInputStream(new FileInputStream( 
uploadedFile)); 
OutputStream output = new BufferedOutputStream(new FileOutputStream( 
new File(completePath))); 


IOUtils.copy(input,output); 

//Cria um novo File que representa o thumbnail 
String nomeThumbnail = file.getName()+"_thumbnail.jpg"; 
File thumbnail = new File(dir+separetedSO, nomeThumbnail); 
try { 
thumbnail.createNewFile(); 
} catch (IOException e) { 
log.error("Erro ao tentar criar a imagem de Thumbnail" + e); 
} 

//Faz uma cópia da imagem upada 
CopiaArquivos copiaArquivo = new CopiaArquivos(); 
copiaArquivo.copia(file, thumbnail); 

//A imagem copiada será reduzida para se tornar o thumbnail 
Miniatura miniatura = new Miniatura(dir+separetedSO, nomeThumbnail); 
miniatura.iniciar(); 

}catch(Exception ex){ 
ex.printStackTrace(); 
} 
} 
}
Bem melhor, não?

Obrigado,
Nathan Paulino Campos

B

Ah, desculpe. É a primeira vez que mando um pergunta.
Mas obrigado pela dica. :smiley:

Criado 27 de agosto de 2009
Ultima resposta 27 de ago. de 2009
Respostas 2
Participantes 2