Olá pessoal, tudo bem?
Como que eu faço a conversão de byte[] para File?
Aproveitando, como que eu defino a extensão do arquivo ByteArrayInputStream? Por exemplo, eu gravo um arquivo .wmv e ele me retorna o mesmo arquivo mas como .asx…
Como que eu arrumo isso?
Eu estava pensando em usar a classe FileDownload onde eu informo o tipo do objeto, está correto? A tag consequiria interpretar essa classe?
Você não faz.
- byte[] é um conjunto de bytes;
- File descreve o caminho de um arquivo.
O máximo que vc pode fazer é gravar o seu byte[] num arquivo, descrito por um File:
File file = new File("meuarquivo.dat"); //Criamos um nome para o arquivo
BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(file)); //Criamos o arquivo
bos.write(bytes); //Gravamos os bytes lá
bos.close(); //Fechamos o stream.
Não entendi sua segunda pergunta. O ByteArrayInputStream não guarda qualquer informação sobre nome ou estrutura do arquivo.
Então como que eu resolveria este problema? Eu estou retornando uma extensão diferente da que eu gravei…
A propósito, isso é um campo BLOB e eu estou gravando e tentando pegar. Mas para fazer com vídeos está mais complicado…
Você deve gravar a mesma extensão. Para isso, guarde a extensão no banco.
As classes de stream só enxergam bytes. Para ela tanto faz o nome que você dá para esses bytes.
Então como que eu faço para retornar um ByteArrayInputStream com o nome que eu desejar?
O nome você define na hora de gravar o stream, como fiz acima.
Na verdade eu não quero gravar arquivos fisicamente, eles são gravados em campos BLOB e quando solicitados, eu os mostro na página HTML…
Com imagens funciona muito bem, mas com vídeos não, ele troca a extensão…
vc precisa da extensão. Senão como vc vai saber o que gravou? :roll:
t+
É como eu falei. Então vc grava em outra coluna qual extensão aqueles dados do blob tem.
Lembre-se blobs e stream trabalham com bytes brutos. Eles não sabem o que aqueles bytes representam. Essa informação adicional você tem que guardar em algum lugar, e fornecer para quem lê esses dados.
Então, eu devolvo esses bytes como um ByteArrayInputStream e dessa forma eu os visualizo em uma IMG tag…
Pessoal, estou com dúvidas sobre o campo BLOB (Oracle PL/SQL).
É possível capturar o nome e extensão do arquivo dentro deste campo?
Ou o campo Binário não armazena o arquivo e seu nome com a extensão?
Obrigado.
O campo Blob só armazena os bytes.
Como ele é lido externamente (nome, extensão, tamanho), não.
[quote=Rafael Guerreiro]O campo Blob só armazena os bytes.
Como ele é lido externamente (nome, extensão, tamanho), não.[/quote]
Obrigado por responder Rafael.
Irei armazenar a extensão dos arquivos em um campo separado.
Pessoa como eu faço a divisão de um arquivo em bytes e depois o salvo em um servidor FTP ?
Sugiro você criar um tópico só sobre isso. Não tem nada a ver com o problema postado aqui…
Ok Rafael, estou sofrendo com isso a horas srrs, obrigado !