Adodb.stream, entrée d'objet ole dans une base de donnée, récupération d'objet ole d'une base pour en faire un fichier

Soyez le premier à donner votre avis sur cette source.

Snippet vu 19 815 fois - Téléchargée 28 fois

Contenu du snippet

Bien entendu ce n'est pas de moi et c'est vu revu et tout le toutim sur internet mais je n'ai pas trouvé cela ici alors je le mets. Il s'agit ici de créer a partir d'un fichier existant sur votre disque dur un objet OLE ( fichier ) dans une base de donnée ACCESS et par la suite de le ressortir de la base de données pour en refaire un fichier nommé comme vous le désirez.

Source / Exemple :


<!--METADATA TYPE="typelib"
      UUID="00000205-0000-0010-8000-00AA006D2EA4"
     NAME="ADODB Type Library"
-->

'Surtout vous ne devez pas oublier ces premières lignes
'Elles définissent la dll à importer pour l'objet que nous allons utiliser

'PREMIERE PARTIE ----- ON ENTRE LE FICHIER DANS LA BASE

'Je passe ici la connection avec la base que l'on peut trouver abondemment
Dim Stream
Dim Rs

'J ouvre la table qui va recueillir mon fichier
Set Rs = Server.CreateObject("ADODB.Recordset")
Rs.open "matable", conn, 3, 3

'Je crée mon objet Stream
Set Stream = Server.CreateObject("ADODB.Stream")

'on définit le type de fichier à lire ici je met 1 mais vous pouvez aussi mettre adTypeBinary
Stream.Type = 1
Stream.Open

'On envoi l'objet Stream lire le contenu du fichier en question
Stream.loadFromFile server.MapPath("fichier.extension")

'On crée un nouvel enregistrement dans la table
rs.addnew

'Et lors on affecte au champ désiré le contenu binaire du fichier
rs.fields("fichier") = Stream.read

'On met a jour
rs.update
'On oublie pas de fermer les objets
rs.close
stream.close
Set rs=nothing
Set stream=nothing
response.redirect "laoulonveut.extension"

'SECONDE PARTIE ----- RECUPERATION DU FICHIER DANS LA BASE DE DONNEES

<!--METADATA TYPE="typelib"
      UUID="00000205-0000-0010-8000-00AA006D2EA4"
     NAME="ADODB Type Library"
-->
'Ne pas oublier d'invoquer la dll
'Comme precedemment, je passe la connection avec la base

'Connection avec la table a l'endroit ou est mon fichier
Set rs = server.CreateObject("ADODB.Recordset")
SQL="SELECT * FROM photos WHERE id like 1"
RS.open SQL, conn, 3, 3

'Creation Objet ADODB.Stream
Set Stream = server.CreateObject("ADODB.Stream")

'Le type de contenu qui va lui être proposé
Stream.Type = adTypeBinary
Stream.Open

'On envoi le code binaire dans le cache
Stream.write rs.fields("photo").value

'Puis on enregistre le fichier avec le code binaire enregistré
'En mode Ecrasement adSaveCreateOverWrite
Stream.SaveToFile "repertoire:\sous-rep\nomdufichier.ext", adSaveCreateOverWrite

'et on ferme tous les objets comme precedemment ( partie 1 )
'Vous pouvez aller voir le fichier est créé

Conclusion :


Il est a noter que ce script ne fonctionnera bien entendu pas si vous avez fais la mise a jour de sécurité Windows puisque celle-ci bloque la creation d'objet stream purement et simplement. Cette mise à jour a été faite suite à une faille exploitée par les virusmen :D. Pour plus d'informations à ce sujet allez donc voir le site de microsoft...

Je vous souhaite une bonne fin de journée.

A voir également

Ajouter un commentaire Commentaires
Messages postés
136
Date d'inscription
vendredi 19 novembre 2004
Statut
Membre
Dernière intervention
25 mai 2012

Lis cet article, tu pourras constater que le correctif desactive la fonction adodb.stream...
http://www.zdnet.fr/actualites/internet/0,39020774,39160026,00.htm
Messages postés
1642
Date d'inscription
samedi 6 novembre 2004
Statut
Modérateur
Dernière intervention
28 avril 2011
3
intéressant en effet ! c'est simplissime et ça fonctionne :D

Par contre tu pourrais préciser un petit peu pour cette histoire de mise à jour Windows, car mon PC est à jour et pourtant j'utilises les Stream assez souvent...et ça marche toujours !

Nurgle

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.