Upload d'images via adodb.stream et sql server

Soyez le premier à donner votre avis sur cette source.

Snippet vu 21 733 fois - Téléchargée 26 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
-
Bonjour,
j'ai un soucis au niveau de la dll.
comment je peux importer la dll pour utiliser ADODB.Stream ?
merci d'avance
Azraelinou
Messages postés
16
Date d'inscription
mercredi 12 mars 2003
Statut
Membre
Dernière intervention
1 octobre 2008
-
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
-
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
-
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.