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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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.