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 !!
Je suis sûre que l'erreur viens de cette ligne:
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
J'ai utilisé POST vue que GET est limité en lenght !
Code : Sélectionner tout - Visualiser dans une fenêtre à part xmlhttp.setRequestHeader "Content-Type", "application/x-www-form-urlencoded"
Au niveau de PHP j'ai utilisé ce code:
NB: la fonction BASE64 de VBS marche nickel vue que je l'est testé apart, suivis de décodage par de PHP en local ...
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); } } ?>
Merci de m'aider.
Partager