Conversion d'une chaine contenant un code hexadécimal en fichier [Résolu]

Signaler
Messages postés
2
Date d'inscription
jeudi 26 novembre 2009
Statut
Membre
Dernière intervention
27 novembre 2009
-
Messages postés
2
Date d'inscription
jeudi 26 novembre 2009
Statut
Membre
Dernière intervention
27 novembre 2009
-
Bonjour,

Je travaille avec SQL Server 2005.

J'ai des fichiers qui sont stockés directement dans la base dans un champs de type image.
Ces fichiers peuvent être de tout type (word, excel, image, etc.).

Lorsque je récupère le contenu du champs en jdbc, j'obtiens un énorme String qui s'apparente à du code hexadécimal: "E000300FEFF0900060002000000DD000100000DF0......."

Je souhaite reconstituer ce fichier pour pouvoir y accéder via le système de fichier mais je n'y arrive pas, auriez-vous une piste par hasard?

Merci par avance!

2 réponses

Messages postés
1155
Date d'inscription
samedi 17 janvier 2004
Statut
Membre
Dernière intervention
29 avril 2011
3
Salut,

ce doit être un blob ou clob. Il faut que tu récupères tes données comme un flux et non comme une String avec la méthode getBinaryStream
Messages postés
2
Date d'inscription
jeudi 26 novembre 2009
Statut
Membre
Dernière intervention
27 novembre 2009

Salut,

Cool! merci bien!

Un autre post m'a également aidé à trouver la solution:
http://www.commentcamarche.net/forum/affich-1551364-java-sauvegarder-flux-et-inputstream

Mon code pour extraire un fichier d'une base de données SQL Server:

while (rs.next()){ 
String id=rs.getString("AttachmentId"); 
String nom=rs.getString("FileName"); 
InputStream contenu=rs.getBinaryStream("Attachment");

File destination = new File(nom);
destination.createNewFile();
FileOutputStream destinationFile = new FileOutputStream(destination);
byte buffer[]=new byte[512*1024];
int nbLecture;		        
        while( (nbLecture = contenu.read(buffer)) != -1 ) {
         	destinationFile.write(buffer, 0, nbLecture);
}

}