Imagem sendo inserida

3 respostas
Mara1

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?

3 Respostas

Mephy

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

Mara1

[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…
:wink: [/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