Envoi (sauvegarde) d'un fichier binaire sur un site distant (asp classique)

Soyez le premier à donner votre avis sur cette source.

Snippet vu 13 006 fois - Téléchargée 25 fois

Contenu du snippet

Permet de sauver des base de données sur un site distant, sans composant payant.
Le principe est le suivant: on utilise le composant Microsoft.XMLHTTP pour envoyer en POST (tel qu'un formulaire) un fichier par l'intermédiaire de l'objet ADO.Stream. Le récepteur utilise aussi l'objet ADO.Stream pour sauver le fichier transmis.

Source / Exemple :


Fichier envoi.asp
<%@LANGUAGE="VBSCRIPT" CODEPAGE="1252"%>
<%
strImagePath = Server.MapPath("./" & Request.QueryString("f"))    ' nom du fichier à transmettre
Set objADOStream = server.createobject("ADODB.Stream")
objADOStream.Open
objADOStream.Type = 1
objADOStream.LoadFromFile strImagePath

Response.Write("sending " & strImagePath & " ...<br>")

URLString = "http://www.votresite.ch/scripts/recois.asp?f=" & Request.QueryString("f")
Set objXMLHTTP = Server.CreateObject ("Microsoft.XMLHTTP")
objXMLHTTP.Open "POST", URLString, False
objXMLHTTP.setRequestHeader "Content-Type", "application/x-www-form-urlencoded"
objXMLHTTP.setRequestHeader "charset", "ISO-8859-1"
objXMLHTTP.send objADOStream.Read(-1)
reqstatus = objXMLHTTP.status
txtResult = objXMLHTTP.responseText		' ou ResponseBody !
Set objXMLHTTP = nothing

Response.Write("reqstatus = '" & reqstatus & "'<br>")
Response.Write("txtResult = '" & txtResult & "'<br>")

objADOStream.Close
Set objADOStream=Nothing 
%>

Fichier recois.asp
<%@LANGUAGE="VBSCRIPT" CODEPAGE="1252"%>
<%
dim file

file = Request.QueryString("f")            ' on demande le nom du fichier à sauver

Set adoStream = Server.CreateObject("ADODB.Stream")
adoStream.Type = 1	' binary
adoStream.Open
adoStream.Write Request.BinaryRead(Request.TotalBytes)		' on intercepte les données émises
adoStream.SaveToFile Server.mapPath("./backup/" & file), 2	' on sauve le fichier
adoStream.Close
Set adoStream = Nothing

Response.Write("fichier '" & file & "' correctement reçu !")
%>

Conclusion :


- Uploader envoi.asp sur le premier serveur
- Uploader recois.asp sur le deuxième serveur (de sauvegarde)
- Lancer envoi.asp?f=maBase.mdb sur le premier serveur

Le deuxième serveur sauve le fichier dans le répertoire "backup" et répond au script du premier serveur.

A voir également

Ajouter un commentaire

Commentaires

Nicolas_kojack
Messages postés
136
Date d'inscription
vendredi 19 novembre 2004
Statut
Membre
Dernière intervention
25 mai 2012
-
Dans le même style :

enfin me semble t'il...

<!--METADATA TYPE="typelib"
UUID="00000205-0000-0010-8000-00AA006D2EA4"
NAME="ADODB Type Library"
-->
<%
Set objXMLHTTP = CreateObject("Microsoft.XMLHTTP")
objXMLHTTP.open "GET", "url du fichier", false

objXMLHTTP.send(null)

Set Stream = server.CreateObject("ADODB.Stream")

Stream.Type = adTypeBinary
Stream.Open

Stream.write objXMLHTTP.responseBody

Stream.SaveToFile "emplacement souhaité avec extension", adSaveCreateOverWrite
%>

En tous cas ca fonctionne au moins avec des fichiers MP3 et JPG pas essayé avec d'autres :p
cs_Chrigou
Messages postés
30
Date d'inscription
lundi 10 février 2003
Statut
Membre
Dernière intervention
27 juin 2008
-
Bonjour Nicolas,

Oui, ça fonctionne mais... il n'est pas possible de recevoir une base de données par exemple car elle est protégée en lecture directe. Il faut donc que l'émetteur prenne la décision de l'envoyer, d'ou mon code.
Merci quand même pour ton code.

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.