Fórum Recuperar imagem (blob) do Banco MySQL + JSF #387007
23/09/2010
0
Diego Alves
Curtir tópico
+ 0Posts
24/09/2010
Davi Costa
de ante mão pode colocar a implementação na tua classe
controller. Ou criar uma classe Utilitária para no teu
managed bean tu só chamar esse método.
Espero ter ajudado
Att Davi
Gostei + 0
24/09/2010
Diego Alves
<f:view>
<h:outputText value="The Products" /> <h1/>
<h:dataTable border="1" var="item" value="#{ProductFace.products}" styleClass="centralizar" >
<h:column>
<f:facet name="header">
<h:outputText value="ID DO PRODUTO"/>
</f:facet>
<h:outputText value="#{item.id_Product}"/>
</h:column>
<h:column>
<f:facet name="header">
<h:outputText value="NOME DO PRODUTO"/>
</f:facet>
<h:outputText value="#{item.nameProduct}"/>
</h:column>
<h:column>
<f:facet name="header">
<h:outputText value="IMAGEM"/>
</f:facet>
<h:graphicImage value="#{item.imagem2}" style="width: 65px; height: 55px;"/>
</h:column>
</h:dataTable>
</f:view>
public class Product implements java.io.Serializable {
private Integer id_Product;
private String NameProduct;
private File imagem; // Input da Imagem no Banco
private BufferedImage imagem2; // Recupera Imagem do Banco
public Product() {
}
public String getNameProduct() {
return NameProduct;
}
public void setNameProduct(String NameProduct) {
this.NameProduct = NameProduct;
}
public Integer getId_Product() {
return id_Product;
}
public void setId_Product(Integer id_Product) {
this.id_Product = id_Product;
}
public File getImagem() {
return imagem;
}
public void setImagem(File imagem) {
this.imagem = imagem;
}
public BufferedImage getImagem2() {
return imagem2;
}
public void setImagem2(BufferedImage imagem2) {
this.imagem2 = imagem2;
}
}
import br.com.classes.Connector;
import br.com.classes.Product;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.LinkedList;
import java.util.List;
import java.io.*;
public class ProductDAO extends Connector {
public ProductDAO() {
super();
}
// Aqui está add Imagem
public boolean add(Product prod) throws ClassNotFoundException, SQLException, FileNotFoundException, IOException {
FileInputStream fis = null;
fis = new FileInputStream(prod.getImagem());
PreparedStatement ps = (PreparedStatement) getPreparedStatement("INSERT INTO DBAPRENDIZ.PRODUCT (NameProduct, Imagem) values ( ?, ?)");
ps.setString(1, prod.getNameProduct());
ps.setBinaryStream(2, fis, (int) prod.getImagem().length());
int toReturn = ps.executeUpdate();
ps.close();
return toReturn > 0;
}
public List<Product> getAllProducts() throws ClassNotFoundException, SQLException, IOException {
List<Product> toReturn = new LinkedList<Product>();
PreparedStatement ps = (PreparedStatement) getPreparedStatement("SELECT * FROM DBAPRENDIZ.PRODUCT ");
ResultSet rs = ps.executeQuery();
while (rs.next()) {
Product prod = new Product();
popularProd(prod, rs);
toReturn.add(prod);
}
rs.close();
closeAll();
return toReturn;
}
public void popularProd(Product prod, ResultSet rs) throws SQLException, IOException {
prod.setId_Product(rs.getInt("id_Product"));
prod.setNameProduct(rs.getString("NameProduct"));
/// Como Recuperar a Imagem da Base de Dados aqui
}
}
Gostei + 0
24/09/2010
Davi Costa
private byte[] imagem;
Creio eu que não vá mais precisar de :
private BufferedImage imagem2; // Recupera Imagem do Banco
Testa se continua salvando direitim.
E depois vc vai pegar esse array de bytes do banco e disserializar(gravar) em uma pasta temporária
no servidor, por isso é p outros motivos de banco essa não é melhor estratégia.
e na jsp
coloca:
<h:graphicImage value="/caminho onde a imagem é salva" style="width: 65px; height: 55px;"/>
Melhor seria vc salvar só a String com o caminho onde grava esse arquivo e na jsp
mantém que nem está acima. Vai ser melhor p banco, melhor para a aplicação.
Vai ser até mais fácil de codificar.
Att Davi
Gostei + 0
27/09/2010
Dyego Carmo
Costuma funcionar melhor...
ValeuZ
Gostei + 0
28/09/2010
Diego Alves
<h:column rendered="false">
<f:facet name="header">
<h:outputText value="ID"/>
</f:facet>
<h:outputText id="id_Product" value="#{item.id_Product}"/>
</h:column>
<h:column>
<f:facet name="header">
<h:outputText value="IMAGEM"/>
</f:facet>
<h:graphicImage value="DisplayImage" style="width: 65px; height: 55px;"/>
</h:column>
Gostei + 0
04/10/2010
Dyego Carmo
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)