Conversion d'une chaine contenant un code hexadécimal en fichier

Résolu
cs_yvon92 Messages postés 2 Date d'inscription jeudi 26 novembre 2009 Statut Membre Dernière intervention 27 novembre 2009 - 26 nov. 2009 à 19:50
cs_yvon92 Messages postés 2 Date d'inscription jeudi 26 novembre 2009 Statut Membre Dernière intervention 27 novembre 2009 - 27 nov. 2009 à 11:31
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

kirua12 Messages postés 1155 Date d'inscription samedi 17 janvier 2004 Statut Membre Dernière intervention 29 avril 2011 8
27 nov. 2009 à 09:43
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
3
cs_yvon92 Messages postés 2 Date d'inscription jeudi 26 novembre 2009 Statut Membre Dernière intervention 27 novembre 2009
27 nov. 2009 à 11:31
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);
}

} 
3