Upload de imagens usando JSF para BD

3 respostas
M

Olá, estou tentando fazer um upload de uma image para um servidor banco de dado Oracle, mas não estou conseguindo.

Estou usando o FileUpload para receber a imagem e transmiti-la para meu VO

segue o codigo que estou usando.

Vo declarando o objeto no BD:

@Lob 
@Basic(fetch= FetchType.LAZY)  
@Column(name = "LTIPO")
private byte[] logotipo;

declaracao do Bean:

private FileUpload fileupload = new FileUpload();
  .....
  private void setFileupload(FileUpload fileupload) {
          this.fileupload = fileupload;
          Empresa VoPadrao = (Empresa) getVoPadrao();
          VoPadrao.setLogotipo(fileupload.toString()); <<<< nao sei como transforma-lo em byte[]
   }

Meu objeto richfaces que fará o upload:

<td>
  <rich:fileUpload id="Logotipo"
        acceptedTypes="jpg, gif, png, bmp"
        binding="#{empresaMBean.fileupload}"
        style="color: #003399; font-family: Tahoma, verdana; font-size: 11; width: 300px"/>
</td>

3 Respostas

yorgan

Opa,
Você pode pegar o File do seu objeto FileUpload e passar para esse método:

public static byte[] getBytesFromFile(File file) throws IOException {
        InputStream is = new FileInputStream(file);
        long length = file.length();

        byte[] bytes = new byte[(int) length];

        int offset = 0;
        int numRead = 0;
        while (offset < bytes.length && (numRead = is.read(bytes, offset, bytes.length - offset)) >= 0) {
            offset += numRead;
        }

        if (offset < bytes.length) {
            throw new IOException("Não foi possível ler o arquivo: " + file.getName());
        }

        is.close();
        return bytes;
    }

[]´s

Daniel

M

e como eu faco para pegar o file do objeto FileUpload ??

yorgan

Você pode testar assim:

private void setFileupload(FileUpload fileupload) {  
          this.fileupload = fileupload;  
          Empresa VoPadrao = (Empresa) getVoPadrao();  
          File f = (File) fileupload.getFileItemFactory();
          byte[] bytes = getBytesFromFile(File file)
          VoPadrao.setLogotipo(bytes);
   }
Criado 25 de maio de 2009
Ultima resposta 25 de mai. de 2009
Respostas 3
Participantes 2