Preciso inserir uma imagem em um cadastro e fazer com que ela apareça na tela…como posso fazer isso?? Tipo quando queremos inserir a foto no perfil do orkut…alguém sabe como fazer isso?
Imagem sendo inserida
3 Respostas
se estiver falando a nível de armazenamento, para SGDBs utilize os tipos BLOB ou IMAGE, de acordo com a disponibilidade do SGDB utilizado. Se não, grave todas as imagens em um diretório específico e utilize isso com as classes básicas de IO e imagem
[color=blue]O que eu quero é tipo buscar a imagem no pc e salvar no banco de dados…e quando for fazer a consulta aparecer a imagem…
[/color]
C
Mara,
Você não informou coisas importantes por exemplo como o seu framework da View, mas vou te postar um exemplo com VRaptor:
Começando pelo DAO:
public EvidenceModel findEvidenceById(EvidenceModel model) throws SQLException{
PreparedStatement preparedStatement =null;
ResultSet rst =null;
EvidenceModel evidenceModel = null;
try{
String sql = "SELECT EVIDENCE_ID,EVIDENCE_DATE,EVIDENCE_FILE_BLOB,BUILD_TEST_ID,NAME_BLOB FROM EVIDENCE WHERE EVIDENCE_ID=?";
preparedStatement = getConnection().prepareStatement(sql);
preparedStatement.setLong(1, model.getId());
rst = preparedStatement.executeQuery();
if (rst.next()){
evidenceModel = new EvidenceModel();
evidenceModel.setId(rst.getLong("EVIDENCE_ID"));
evidenceModel.setData(rst.getDate("EVIDENCE_DATE"));
evidenceModel.setBuild(new BuildModel(rst.getLong("BUILD_TEST_ID")));
Blob file = rst.getBlob("EVIDENCE_FILE_BLOB");
evidenceModel.setFileBlob(file.getBytes(1,(int)file.length()));
evidenceModel.setFileName(rst.getString("NAME_BLOB"));
}
}finally{
closeResultSet(rst);
closeConnection(preparedStatement.getConnection());
closeStatement(preparedStatement);
}
return evidenceModel;
}
public void saveEvidence(EvidenceModel model)throws SQLException{
PreparedStatement preparedStatement =null;
try{
String sql = "INSERT INTO EVIDENCE (EVIDENCE_ID,EVIDENCE_DATE,EVIDENCE_FILE_BLOB," +
"BUILD_TEST_ID,NAME_BLOB) VALUES(?,SYSDATE,?,?,?)";
preparedStatement = getConnection().prepareStatement(sql);
preparedStatement.setLong(1,getNextValueBySeq("TREX_EVIDENCE_SEQ"));
preparedStatement.setBytes(2, model.getFileBlob());
preparedStatement.setLong(3, model.getBuild().getId());
preparedStatement.setString(4, model.getFileName());
preparedStatement.executeUpdate();
}finally{
closeConnection(preparedStatement.getConnection());
closeStatement(preparedStatement);
}
}
O Model
public class EvidenceModel implements Serializable {
private Long id;
private Date data;
private byte[] fileBlob;
private BuildModel build;
private String fileName;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public Date getData() {
return data;
}
public void setData(Date data) {
this.data = data;
}
public BuildModel getBuild() {
return build;
}
public void setBuild(BuildModel build) {
this.build = build;
}
public String getFileName() {
return fileName;
}
public void setFileName(String fileName) {
this.fileName = fileName;
}
public byte[] getFileBlob() {
return fileBlob;
}
public void setFileBlob(byte[] fileBlob) {
this.fileBlob = fileBlob;
}
Por fim o Controller:
@Post
public void gravarEvidencia(EvidenceModel model, UploadedFile file){
ExecutionBO bo = new ExecutionBOImpl();
try{
model.setFileBlob(IOUtils.toByteArray(file.getFile()));
bo.saveEvidence(model);
result.redirectTo(ExecuteController.class).evidencia(model.getBuild());
}catch (BOException e){
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public ByteArrayDownload downLoadFile(EvidenceModel model){
ExecutionBO bo = new ExecutionBOImpl();
EvidenceModel evidenceModel = null;
ByteArrayDownload file = null;
try{
String content = "";
evidenceModel = bo.findEvidenceById(model);
if (evidenceModel!=null && evidenceModel.getFileName()!=null && !"".equals(evidenceModel.getFileName())){
content="image/jpg";
file = new ByteArrayDownload(evidenceModel.getFileBlob(),content,evidenceModel.getFileName());
}
}catch (BOException e){
e.printStackTrace();
}
return file;
}
Prontinho, so não coloquei a JSP porque você provavelmente ja tem a sua e os métodos do BO poque nesse caso estão funcionando como Delegates então não fariam diferença.
[ ],
Cássio Santiago
Criado 6 de agosto de 2011
Ultima resposta 1 de out. de 2011
Respostas 3
Participantes 3