Java IO - Retornar várias imagens do Blob para o .JSP

0 respostas
A

Como faço para imprimir na tela as imagens pegas de um Blob, vindas como Bytes e convertidas para InputStream e jogadas posteriormente num array... Aconte q só está imprimindo o um regristro do banco... Estranho não? Pois estou acessando o array abaixo, veja:

/**
	 * @return the inputStream
	 */
	public InputStream getInputStream() { //esse método é
                                                                          //chamado via getInputStream 
		InputStream is = null; 
    	for (int i = 0; i < arrayDeInputStreams.length; i++){   
    		if (arrayDeInputStreams[i] != null){ 
    			is = arrayDeInputStreams[i];	
    		}
      	} 
		return is;
	}

struts.xml (Struts2)

<action name="verImagem" class="br.com.editorasaraiva.repositoriodigital.action.GaleriaImagemAction" method="getJSON">
      		<result type="stream" />
   		 </action>

Método q pega os registros da base de dados e adiciona no array
Classe responsável pelo Upload das imagens:

@SuppressWarnings("serial")
    public class UploadImagemAction extends ActionSupport{
   
    //atributos    
    	
    private int idPessoa; //parâmetro quando for fazer insert
    
    private File imagemDoUsuario1;
    private File imagemDoUsuario2;
    private File imagemDoUsuario3;
    
    private String imagemDoUsuario1ContentType;
    private String imagemDoUsuario2ContentType;
    private String imagemDoUsuario3ContentType;
    
    private PessoaImagem pessoaImagem1 = new PessoaImagem();
    private PessoaImagem pessoaImagem2 = new PessoaImagem(); 
    private PessoaImagem pessoaImagem3 = new PessoaImagem();
        
    private PessoaImagemDAO pessoaImagemDAO = new PessoaImagemDAO();
        	 
    //private String imagemDoUsuarioFileName;
	           
    private static final String TIPOS_ACEITOS = "jpeg|png|gif|";	
    
    /**
     * Método Action - Responsável por fazer o importe das imagens
     * @return SUCCESS
     * @return INPUT
     * @throws IOException
     * @throws SizeLimitExceededException
     * */
	@Override
	public String execute() throws IOException, SizeLimitExceededException{  		
		String formatoImagem1 = imagemDoUsuario1ContentType;
		String formatoImagem2 = imagemDoUsuario2ContentType;
		String formatoImagem3 = imagemDoUsuario3ContentType;		    
		for (int i = 1; i < 4; i++) {
			String imagemDoUsuario = "imagemDoUsuario";
			String imagem = imagemDoUsuario + i;		
			if(imagem.equals("imagemDoUsuario1")){
				if (imagemDoUsuario1 != null){
			    	if (!formatoImagem1.startsWith("image")){
			    		System.out.println("O campo (Imagem 1) é nulo!");
			    	}else{
			    		if((!TIPOS_ACEITOS.contains(formatoImagem1.substring(6, formatoImagem1.length())))){
			    			throw new IllegalArgumentException(	"O formato do arquivo (Imagem 1) é inválido! Não é uma imagem aceita!");
			    		}
			    		int j = 2 * 1000000; //conversão de 2 MB (Mega Bytes) em Bytes
						if (imagemDoUsuario1.length() >= j)	{ 
							throw new SizeLimitExceededException("A (Imagem 1) anexada ultrapassa o tamanho máximo suportado pelo Apache FileUpload que é " + j + "MB (Mega Bytes)");
						}
					}		    	 
			    }
			}			
			if(imagem.equals("imagemDoUsuario2")){
				if (imagemDoUsuario2 != null){
					if (!formatoImagem2.startsWith("image")){
			    		System.out.println("O campo (Imagem 2) é nulo!");
			    	}else{
			    		if((!TIPOS_ACEITOS.contains(formatoImagem2.substring(6, formatoImagem2.length())))){
			    			throw new IllegalArgumentException(	"O formato do arquivo (Imagem 2) é inválido! Não é uma imagem aceita!");
			    		}
			    		int j = 2 * 1000000; //conversão de 2 MB (Mega Bytes) em Bytes
						if (imagemDoUsuario2.length() >= j){ 
							throw new SizeLimitExceededException("A (Imagem 2) anexada ultrapassa o tamanho máximo suportado pelo Apache FileUpload que é " + j + "MB (Mega Bytes)");
						}
					}				    	 
			    	
			    }
			}			
			if(imagem.equals("imagemDoUsuario3")){
				if (imagemDoUsuario3 != null){
					if (!formatoImagem3.startsWith("image")){
			    		System.out.println("O campo (Imagem 3) é nulo!");
			    	}else{
			    		if((!TIPOS_ACEITOS.contains(formatoImagem3.substring(6, formatoImagem3.length())))){
			    			throw new IllegalArgumentException(	"O formato do arquivo (Imagem 3) é inválido! Não é uma imagem aceita!");
			    		}
			    		int j = 2 * 1000000; //conversão de 2 MB (Mega Bytes) em Bytes
						if (imagemDoUsuario3.length() >= j){ 
							throw new SizeLimitExceededException("A (Imagem 3) anexada ultrapassa o tamanho máximo suportado pelo Apache FileUpload que é " + j + "MB (Mega Bytes)");
						}
					}			    	 
			    }
			}			
			if (i == 3) {
				if (imagemDoUsuario1 == null && imagemDoUsuario2 == null && imagemDoUsuario3 == null){  
					System.out.println("Tela carregada. Todos os campos estão nulos.");
					return INPUT; 
				}
				else{
					//imagem 1
					if(imagemDoUsuario1.exists()){
					    InputStream entrada1 = new FileInputStream(imagemDoUsuario1);    
					   
					    OutputStream saida1 = new ByteArrayOutputStream();    
						    
					    byte[] buffer1 = new byte[(int)imagemDoUsuario1.length()]; 
						int bytesLidos1 = -1;  
						
						while ((bytesLidos1 = entrada1.read(buffer1, 0, buffer1.length)) != -1){  
						      saida1.write(buffer1, 0, bytesLidos1);  
						}  
						
						saida1.flush();  
						saida1.close();  
						entrada1.close();  
						    
						buffer1 = ((ByteArrayOutputStream) saida1).toByteArray();  
						
						pessoaImagem1.setImagem(buffer1);    
									
						pessoaImagemDAO.salvarImagem(pessoaImagem1, idPessoa);  
					}
					//imagem 2
					if(imagemDoUsuario2.exists()){
					    InputStream entrada2 = new FileInputStream(imagemDoUsuario2);    
					   
					    OutputStream saida2 = new ByteArrayOutputStream();    
						    
					    byte[] buffer2 = new byte[(int)imagemDoUsuario2.length()]; 
						int bytesLidos2 = -1;  
						
						while ((bytesLidos2 = entrada2.read(buffer2, 0, buffer2.length)) != -1){  
						      saida2.write(buffer2, 0, bytesLidos2);  
						}  
						
						saida2.flush();  
						saida2.close();  
						entrada2.close();  
						    
						buffer2 = ((ByteArrayOutputStream) saida2).toByteArray();  
						
						pessoaImagem2.setImagem(buffer2);    
							
						pessoaImagemDAO.salvarImagem(pessoaImagem2, idPessoa);  
					}		
					//imagem 3
					if(imagemDoUsuario3.exists()){
					    InputStream entrada3 = new FileInputStream(imagemDoUsuario3);    
					   
					    OutputStream saida3 = new ByteArrayOutputStream();    
						    
					    byte[] buffer3 = new byte[(int)imagemDoUsuario3.length()]; 
						int bytesLidos3 = -1;  
						
						while ((bytesLidos3 = entrada3.read(buffer3, 0, buffer3.length)) != -1){  
						      saida3.write(buffer3, 0, bytesLidos3);  
						}  
						
						saida3.flush();  
						saida3.close();  
						entrada3.close();  
						    
						buffer3 = ((ByteArrayOutputStream) saida3).toByteArray();  
						
						pessoaImagem3.setImagem(buffer3);    
						
						pessoaImagemDAO.salvarImagem(pessoaImagem3, idPessoa);  
					}
				}
			}
		}
		return SUCCESS;  	

//get e set
	}
Criado 3 de novembro de 2010
Respostas 0
Participantes 1