Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

UPLOAD D'IMAGES VIA ADODB.STREAM ET SQL SERVER


Information sur la source

Description

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

  • '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 ;)
'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 ...
 

Commentaires et avis

signaler à un administrateur
Commentaire de Nicolas_kojack le 29/11/2005 12:22:38

Vos commentaires sont evidemment les bien venus ;) :D

signaler à un administrateur
Commentaire de Nicolas_kojack le 13/01/2006 16:20:52

En fait ca marche avec d'autres type de fichiers donc je dirais que c'est un upload de fichiers tout court !! :p

signaler à un administrateur
Commentaire de Azraelinou le 05/10/2006 15:43:55

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

Ajouter un commentaire

Discussions en rapport avec ce code source dans le forum

Upload Nix [ par Clem ] Pui je utiliser ton upload pour mon site que je suis en train de faire sur la programmation (Vb,C++,Qb,ASP,Javascript,API,VRML) ?Et comment faire pour upload [ par rico ] je monte un site avec une base de donnée access possedant un objet ole, 3 problèmes se posent à moi :1__ pouvoir réaliser un upload du fichier sélecti pour nix à propos de upload 2.0 [ par bernard ] Salut Nix,Tout d'abord merci pour le code, je l'utilise actuellement pour uploader 1 fichier attaché depuis mon site dans le cadre d'un dépot de CV en Lire un fichier binaire [ par dan ] je voudrais lire le contenu d un fichier binaire, mais je ne trouve que la fonction OpenFileText pour lire le contenu du fichier, et evidemment j ai t Lister un répertoire sur un serveur [ par Nabel ] Bonjour, bonjour,Voilà le pb : ma page asp permet d'uploader des fichiers sur le serveur, mais qd j'upload un fichier qui a le même nom qu'un fichier Upload de fichier automatique, GALERE [ par vincentp ] Bonjour à tous,Mon projet est d'envoyer des fichiers sur internet avec VB6 sans passer par le ftp. Sur ce site je peux créer des pages ASP et donc réc Ecrire un fichier binaire [ par yoyo2 ] Bonjour à tous,Je voudrais savoir s'il y a un équivalent à CreateTextFile pour les fichiers binaires.En PHP on peut le faire mais en ASP je n'ai rien Vérifier la taille d'un fichier avant l'upload [ par Dura ] BonjourJ'ai un petit prob,Dans un formulaire classique, il y a un champ "image" = upload!Je vérifie tous les champs sauf la taille du fichier à upload upload + verification [ par bebe.vodka ] salut!voila, en fait j'utilise le composant aspSmartUpload dans un programme pour l'upload de fichiers. je verifie aussi si mon fichier existe deja su Formulaire d'upload d'un fichier et du passage d'autre infos [ par Jerome ] Bonsoir,Je cherche à créer un formulaire avec plusieurs champs:Nom: champ textePrenom: champ textePhoto: image que l'utilisateur va chercher sur son d


Nos sponsors

Sondage...

CalendriCode

Décembre 2008
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,343 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.