Upload d'images via adodb.stream et sql server

Soyez le premier à donner votre avis sur cette source.

Snippet vu 22 583 fois - Téléchargée 28 fois

Contenu du snippet

Ce code permet comme son nom l'indique d'uploader sur un serveur distant des images via SQL Server et ADODB.Stream
Votre base SQL Server est installée sur un serveur distant. Pourquoi SQL Server ? et bien la réponse est simple, il s'agit de pouvoir mettre en local une chaine de connection à une base de données distantes ( étant donné que je ne pense pas que l'on puisse le faire avec ACCESS ... )

Pour se faire votre base de données doit contenir une table avec un champ image.
Vous avez un fichier en local pour lire les fichiers sur le disque dur, un autre fichier sur serveur distant pour réceptionner les fichiers envoyés

Source / Exemple :


'Pour commencer une page local pour mon exemple je choisi envoi.asp
'Ne pas oublier d'importer la dll permettant d'utiliser ADODB.Stream

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

'Ensuite la fameuse connection avec la base SQL Server
Conn = "DRIVER={SQL SERVER};user id=login; Password=motdepasse ; server=adresse de votre base;  database=nom de la base"

'On selectionne ensuite la table sensée contenir les images
Set rs = server.CreateObject("ADODB.Recordset")
SQL="SELECT * FROM images"
RS.open SQL, conn, 3, 3

'On ouvre l'objet STREAM
Set Stream = server.CreateObject("ADODB.Stream")
'On définit le type de données a lire ( ici données binaires, vous pouvez aussi mettre 1 à la place de adbinary )
Stream.Type = adTypeBinary
Stream.Open
'On définit le fichier a Uploader
Stream.loadFromFile ("c:\monrep\monfichier.extension")

'On crée un nouvel enregistrement dans la table
rs.addnew
'Mon champ image recoit les données binaires
rs.fields("image") = Stream.read
'Mise à jour de la base de données
rs.update
'Fermeture des objets
rs.close
stream.close
Set rs=nothing
Set stream=nothing
response.redirect "adressedelapagedistante"

'----------------------------------------------------------------
'Intervient maintenant la page distante
'Toujours ne pas oublier la dll

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

'Connection à la base SQL Server
Conn = "DRIVER={SQL SERVER};user id=login; Password=motdepasse ; server=adresse de votre base;  database=nom de la base"

'Connection a la table
Set rs = server.CreateObject("ADODB.Recordset")
'Je vais chercher le premier enregistrement dans mon exemple
SQL="SELECT * FROM images WHERE id like 1"
RS.open SQL, conn, 3, 3

'Ouverture de l'objet STREAM
Set Stream = server.CreateObject("ADODB.Stream")
'On définit le type de données a lire ( ici données binaire, vous pouvez aussi mettre 1 à la place de adbinary )
Stream.Type = adTypeBinary
Stream.Open

'On recupère les données comprise dans le champ
Stream.write rs.fields("image").value

'Maintenant on crée le fichier sur le serveur distant
'Avec une adresse physique
'Ici le mode d'écriture du fichier est en écrasement
Stream.SaveToFile "cheminphysique\lenomdufichier.extension", adSaveCreateOverWrite

'On ferme tous les objets
rs.close
stream.close
Set rs=nothing
Set stream=nothing

' Il ne reste plus qu'a vérifier ;)

Conclusion :


Pour que cela fonctionne, il faut que le serveur dispose du logiciel SQL Serveur... evidemment, que le serveur n'ai pas bloqué la fonction Stream.

- Quelques Avantages :
Facile à programmer et à amménager
Pas de composant installé sur le serveur

- Quelques Inconvénients :
Trouver un serveur qui dispose de SQL Server et n'ayant pas désactivé le Stream
Avoir sa propre liscence somme toute couteuse ;)

Enfin cela reste un moyen détourné ...

Bonne journée a tous

PS si quelqun connait une chaine de connection pour une base de données distante ACCESS étant donné que je ne sais pas si cela se fait ...

A voir également

Ajouter un commentaire Commentaires
erraouiibtissam Messages postés 3 Date d'inscription jeudi 23 septembre 2010 Statut Membre Dernière intervention 16 décembre 2011
16 déc. 2011 à 17:52
Bonjour,
j'ai un soucis au niveau de la dll.
comment je peux importer la dll pour utiliser ADODB.Stream ?
merci d'avance
Utilisateur anonyme
5 oct. 2006 à 15:43
Salut, oui, en effet, c'est un upload tout court.

il a deja un tres bon code qui permet de ne le faire qu'avec les images.

http://www.aspfr.com/codes/ENREGISTRER-FICHIERS-DANS-BASE-DONNEES-RESTITUER_32582.aspx

pour ce qui est la connection distante a Access... bien sur ca peut se faire si le fichier se situe dans un repertoire partagé... mais en effet avec SQL Server, ca reste plus simple.

je dois t'avouer que j'avais trouvé tout ce qu'il me fallait dans l'exemple cité plus haut, mais merci toujours pour ta source. ca me donnera peut etre le moyen de contourner un problème que je me pose en ce moment.

Bon coding!


merci
Nicolas_kojack Messages postés 136 Date d'inscription vendredi 19 novembre 2004 Statut Membre Dernière intervention 25 mai 2012
13 janv. 2006 à 16:20
En fait ca marche avec d'autres type de fichiers donc je dirais que c'est un upload de fichiers tout court !! :p
Nicolas_kojack Messages postés 136 Date d'inscription vendredi 19 novembre 2004 Statut Membre Dernière intervention 25 mai 2012
29 nov. 2005 à 12:22
Vos commentaires sont evidemment les bien venus ;) :D

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.