post a file using PHP to remote server without ftp

Recently I was working for a product where i have to post a file to a remote server where remote server dont allow outbout FTP.
And in this process i found a couple of methods to post file to server;

my required file was in Xml and have to post that xml to remote server where I can fetch that data
Its quite simple and easy method.

here are my findings

local file name : postfile.php
remote file name : receivexml.php

code for postfile.php


$thistext=”
       
         
                1234
                0
                keyword
               
wltable

               
                        1
                        04-JUL-12
                        27-JUL-12
                        Expiry Message
               

             
         
        “;


$ch = curl_init(‘http://rem.ote.server.ip/receivexml.php’);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, “POST”);
curl_setopt($ch, CURLOPT_POSTFIELDS, $thistext);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
‘Content-Type: application/xml’,
‘Content-Length: ‘ . strlen($thistext)) );                                                                                                                  
$result = curl_exec($ch);
print_r($result);
curl_close($ch);

code for  receivexml.php

echo “test xml”;
if ( $_SERVER[‘REQUEST_METHOD’] === ‘POST’ ){
    $postText = file_get_contents(‘php://input’);
}
//print_r($postText);
$shortcode=”;
$xml = new SimpleXMLElement($postText);
$result = $xml->xpath(‘/SERVICES/ serv1234/short’);
while(list( , $node) = each($result)) {
    echo $short=$node;
}
$myFile = “/directory/path/to/xml/”.$short.”.xml”;
$fh = fopen($myFile, ‘w’) or die(“can’t open file”);
$stringData=$postText;
fwrite($fh, $stringData);
fclose($fh);
?>

in receivexml.php

  1. received the file and stored in  $postText
  2. parsed the xml data with xpath
  3. set the file name to a tag value in this case “short”
  4. write data to file.