Como conseguir um InputStream a partir de um array de bytes?
6 respostas
Luiz_Gustavo
Galera, como é que faço para obter um InputStream a partir de um array de bytes?
Minha situação é a seguinte: preciso gravar arquivos PDF no banco de dados, e vou apresentá-los utilizando o viewer da adobe.
A entrada de dados para o viewer é através de um InputStream.
Colocar um arquivo no banco é beleza, e quando obtenho o conteúdo do banco, posso obter o InputStream direto, a partir do método getBinaryStream() do ResultSet. Porém, em minha classe, quero que o atributo seja um array de bytes, e quero transformá-lo em um InputStream somente na hora de apresentar o conteúdo.
Putz LIPE, é exatamente isso!
Testei aqui e deu certo.
vlw!
:thumbup:
T
thingol
Cuidado com arrays de bytes - já pensou qual é o tamanho máximo de um PDF?
Se puder, evite ficar com um PDF inteirinho dentro da memória.
Luiz_Gustavo
thingol:
Cuidado com arrays de bytes - já pensou qual é o tamanho máximo de um PDF?
Se puder, evite ficar com um PDF inteirinho dentro da memória.
O que me aconselharia thingol? Trabalhar com o InputStream direto?
Uma vez, trabalhando com imagens, tive problemas ao usar o InputStream. Eu tinha em meu objeto um atributo do tipo InputStream, e depois que eu criava um ImageIcom com esse InputStream, eu não conseguia criar outro.
Resolvi então trabalhar com arrays de bytes.
Pensei em fazer o mesmo com os PDF’s (se bem que as imagens que tenho no banco são bem menores).
Os arquivos PDF’s não devem passar de 300 KB.
A
androdana
Olá amigo tem como vc disponibilizar os fontes do seu projeto, estou querendo fazer o mesmo aqui e estou com dificuldade da implementação/transformação do byte[] para InputStream…
wagnerfrancisco
Conforme o Filipe Sabella sugeriu, você pode usar um ByteArrayInputStream: