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:
[code] @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
}[/code]