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

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

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.