VBScript upload de fichier
Mercredi 19 décembre 2012La plupart des exemples sur internet utilise la méthode put pour envoyer des fichiers en upload sur un serveur web. Voici un script qui permet de le faire avec Content-Disposition: form-data.
[sourcecode language="vb"]Function UploadFile( url, file, fileType )
Set oXMLHTTP = CreateObject("MSXML2.XMLHTTP")
Dim boundary
boundary = "12345678"
Set objStream = CreateObject("ADODB.Stream")
objStream.Type = 1 ‘ binary
objStream.Open
objStream.LoadFromFile(file)
‘Stream de text
Set sOut = CreateObject("ADODB.Stream")
sOut.Charset = "us-ascii"
sOut.Type = 2 ‘ Text
sOut.Open
sOut.WriteText "–" & boundary & vbCrLf
sOut.WriteText "Content-Disposition: form-data; name=""file""; filename="""&file&"""" & vbCrLf
sOut.WriteText "Content-Type: " & fileType & vbCrLf & vbCrLf
Set sOut2 = CreateObject("ADODB.Stream")
sOut2.Charset = "us-ascii"
sOut2.Type = 2 ‘ Text
sOut2.Open
sOut2.WriteText vbCrLf & "–" & boundary & "–" & vbCrLf & vbCrLf
Set sAll = CreateObject("ADODB.Stream")
sAll.Type = 1 ‘binary
sAll.Open
sOut.Position = 0
sOut.CopyTo sAll
objStream.CopyTo sAll
sOut2.Position = 0
sOut2.CopyTo sAll
oXMLHTTP.Open "POST", url, False
oXMLHTTP.setRequestHeader "Content-Type", "multipart/form-data; boundary=" & boundary
oXMLHTTP.setRequestHeader "Connection", "close"
oXMLHTTP.setRequestHeader "Content-length", sAll.Size
sAll.Position = 0
oXMLHTTP.Send sAll.Read()
Wscript.Echo "Upload-Status: " & oXMLHTTP.statusText
End Function
UploadFile "http://upload.server/upload.php", "Configurations.zip", "application/x-zip-compressed"[/sourcecode]