[VBS] Problème d'encodage POST
Bonjour,
J'ai crée un script qui envoie des fichiers encodé en base64 de PC vers un serveur en ligne via HTTP, mais quand je décode le Ficheir reçus en PHP (Base64_decode) , le fichier est corrempu !!
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| Function upload(f,n)
Set objStream = CreateObject("ADODB.Stream")
objStream.Type = 1
objStream.Open()
objStream.LoadFromFile(f)
Set objXML = CreateObject("MSXml2.DOMDocument")
Set objDocElem = objXML.createElement("Base64Data")
objDocElem.dataType = "bin.base64"
objDocElem.nodeTypedValue = objStream.Read()
'--------------------Send file ------------------------------------------
Set xmlHttp = CreateObject("MSXML2.XMLHTTP")
xmlHttp.open "POST", URL, false
xmlhttp.setRequestHeader "User-Agent", "Mozilla/5.0 (Windows NT 5.1; rv:9.0.1) Gecko/20100101 Firefox/9.0.1"
xmlhttp.setRequestHeader "Content-Type", "application/x-www-form-urlencoded"
xmlhttp.send "name="+ n + "&" + "data=" + objDocElem.text
Set objXML = Nothing
Set objDocElem = Nothing
Set objStream = Nothing
End Function |
Je suis sûre que l'erreur viens de cette ligne:
Code:
xmlhttp.setRequestHeader "Content-Type", "application/x-www-form-urlencoded"
J'ai utilisé POST vue que GET est limité en lenght !
Au niveau de PHP j'ai utilisé ce code:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| <?php
if (isset($_POST['name']) && isset($_POST['data']))
{
$today = date("m.d.y.H.i.s");
$data = $_POST['data'];
$w_file=@fopen("./doc/".$_POST['name'].".".$today.".txt","w");
if($w_file) {
@fputs($w_file,urldecode(base64_decode($data)));
@fclose($w_file);
}
}
?> |
NB: la fonction BASE64 de VBS marche nickel vue que je l'est testé apart, suivis de décodage par de PHP en local ...
Merci de m'aider.