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

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

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.