In below code using i try to upload multiple files to remote URL.
but only 1 file data only i am receiving. please help any one to resolve issue.

remotepage.php i am not getting sign,cheque file details

<?php 
function do_post_request($url, $postdata, $files = null) 
{ 
    $data = ""; 
    $boundary = "---------------------".substr(md5(rand(0,32000)), 0, 10); 

//Collect Postdata 
foreach($postdata as $key => $val) 
{ 
    $data .= "--$boundary\n"; 
    $data .= "Content-Disposition: form-data; name=\"".$key."\"\n\n".$val."\n"; 
} 

$data .= "--$boundary\n"; 

//Collect Filedata 
foreach($files as $key => $file) 
{ 
    $fileContents = file_get_contents($file['tmp_name']); 

    $data .= "Content-Disposition: form-data; name=\"{$key}\"; filename=\"{$file['name']}\"\n"; 
    $data .= "Content-Type: image/jpeg\n"; 
    $data .= "Content-Transfer-Encoding: binary\n\n"; 
    $data .= $fileContents."\n"; 
    $data .= "--$boundary--\n"; 
} 

$params = array('http' => array( 
       'method' => 'POST', 
       'header' => 'Content-Type: multipart/form-data; boundary='.$boundary, 
       'content' => $data 
    )); 

   $ctx = stream_context_create($params); 
   $fp = fopen($url, 'rb', false, $ctx); 

   if (!$fp) { 
      throw new Exception("Problem with $url, $php_errormsg"); 
   } 

   $response = @stream_get_contents($fp); 
   if ($response === false) { 
      throw new Exception("Problem reading data from $url, $php_errormsg"); 
   } 
   return $response; 
} 

//set data (in this example from post) 

//sample data 
$postdata = array( 
    'name' => $_POST['name'], 
    'age' => $_POST['age'], 
   ); 

//sample image 
$files['photo'] = $_FILES['txtphoto'];
$files['sign'] = $_FILES['txtsign'];
$files['cheque'] = $_FILES['txtcheque'];


do_post_request("http://example.com/remotepage.php", $postdata, $files); 




remotepage.php code

$somecontent = $_POST['name'];
$somecontent.= $_POST['age'];
$somecontent.= $_FILES['photo']['name'];
$somecontent.= $_FILES['sign']['name'];
$somecontent.= $_FILES['cheque']['name'];

$ourFileName ='./uploads/a.txt';
$ourFileHandle = fopen($ourFileName,'w');
if (fwrite($ourFileHandle, $somecontent) === FALSE) {
        echo "Cannot write to file ($ourFileName)";
        exit;
   }
fclose($ourFileHandle);


?>

    One problem I notice is here:

    $data .= "--$boundary--\n"; 

    What's with the two hyphens after $boundary? You don't include them in your Content-Type's "boundary" definition, thus that line isn't going to be considered a boundary between the multiple parts.

      bradgrafelman;10983422 wrote:

      One problem I notice is here:

      $data .= "--$boundary--\n"; 

      What's with the two hyphens after $boundary? You don't include them in your Content-Type's "boundary" definition, thus that line isn't going to be considered a boundary between the multiple parts.

      Thankyou . bradgrafelman, you are right . $boundary variable is the problem. i changed to

      $data .= "--$boundary\n"; 
        Write a Reply...