[JAVA] byte[] als attachment downloaden

Pagina: 1
Acties:

  • dip
  • Registratie: September 2003
  • Laatst online: 16-01-2023

dip

shut up ulé

Topicstarter
Beste tweakers.

Ik ben momenteel bezig met een project waarbij we een webapplicatie moeten bouwen met JSF, Hibernate en MySQL. In de applicatie moeten bestanden geuploaden worden en deze moeten vervolgens in de database opgeslagen worden.

Dit is reeds gerealiseerd door gebruik te maken van org.apache.myfaces.custom.fileupload.UploadedFile. Het BLOB veld waarin dit bestand opgeslagen wordt is als byte[] gemapped in Hibernate.

Nu wil ik het bestand kunnen downloaden. Hibernate vult mijn BO met een byte[] waarin het bestand staat.

Een cast van byte naar char geeft corrupte data. De data in de database is 100% correct.
Weet iemand hoe dit eenvoudig op te lossen is zonder heel de architectuur om te gooien?

It's scientifically known, that base improves the tase of cheezes!


Verwijderd

Heb je al uitgezocht hoe een byte verschilt van een leesteken (ik zeg dus niet char). Kijk bijvoorbeeld een naar encoding.

  • zwippie
  • Registratie: Mei 2003
  • Niet online

zwippie

Electrons at work

FileOutputStream kan van een byte array een File maken.

How much can you compute with the "ultimate laptop" with 1 kg of mass and 1 liter of volume? Answer: not more than 10^51 operations per second on not more than 10^32 bits.


Verwijderd

En waarom zou je er een file van willen maken? (voor de goede orde: de data staat al in het geheugen)

  • TukkerTweaker
  • Registratie: November 2001
  • Laatst online: 13-02 14:51
ByteArrayOutputStream kun je ook gebruiken en in je servlet response de contenttype aangeven (bestandsindeling: pfd, xls, etc..).

  • momania
  • Registratie: Mei 2000
  • Nu online

momania

iPhone 30! Bam!

idd, juiste header in je response proppen en de data direct naar de outputstream van de response schrijven. net zo makkelijk :)

Neem je whisky mee, is het te weinig... *zucht*


  • zwippie
  • Registratie: Mei 2003
  • Niet online

zwippie

Electrons at work

Verwijderd schreef op maandag 14 augustus 2006 @ 15:13:
[...]

En waarom zou je er een file van willen maken? (voor de goede orde: de data staat al in het geheugen)
Is inderdaad een overbodige tussenstap. Naja, als noodoplossing dan maar. ;)

How much can you compute with the "ultimate laptop" with 1 kg of mass and 1 liter of volume? Answer: not more than 10^51 operations per second on not more than 10^32 bits.


  • dip
  • Registratie: September 2003
  • Laatst online: 16-01-2023

dip

shut up ulé

Topicstarter
Ik heb er al een oplossing voor gevonden.
Vanuit mijn FacesContext kan ik een ServletOutputStream object ophalen, welke standaard functionaliteit biedt voor het schrijven van bytes :)
Java:
1
2
HttpServletResponse response = (HttpServletResponse) context.getExternalContext().getResponse();       
response.getOutputStream().write(byteArray);

edit:
typo's

[ Voor 3% gewijzigd door dip op 14-08-2006 15:27 ]

It's scientifically known, that base improves the tase of cheezes!

Pagina: 1