Sender PHP Code
<form method="post" action="<?=$_SERVER["PHP_SELF"] ?>" enctype="multipart/form-data">
<input name="file" type="file" />
<input type="submit" value="Upload" />
</form>
<?php
if(!empty($_FILES)){
$target="https://juliusgoh.life/tut/attachment-receiver.php";
echo "<pre>";
print_r($_FILES);
echo "</pre>";
# http://php.net/manual/en/curlfile.construct.php
// Create a CURLFile object / procedural method
$cfile = curl_file_create($_FILES["file"]["tmp_name"],$_FILES["file"]["type"],$_FILES["file"]["name"]); // try adding
// Create a CURLFile object / oop method
#$cfile = new CURLFile("resource/test.png","image/png","testpic"); // uncomment and use if the upper procedural method is not working.
// Assign POST data
$imgdata = array("file" => $cfile);
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $target);
#curl_setopt($curl, CURLOPT_USERAGENT,"Opera/9.80 (Windows NT 6.2; Win64; x64) Presto/2.12.388 Version/12.15");
curl_setopt($curl, CURLOPT_HTTPHEADER,array("Content-Type: multipart/form-data"));
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); // stop verifying certificate
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_POST, true); // enable posting
curl_setopt($curl, CURLOPT_POSTFIELDS, $imgdata); // post images
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true); // if any redirection after upload
$r = curl_exec($curl);
curl_close($curl);
echo "<h1>Result</h1>";
echo "<pre>";
print_r($r);
echo "</pre>";
}
?>
Receiver PHP Code
<?php
$uploaddir = realpath("./") . "/";
$uploadfile = $uploaddir . basename($_FILES["file"]["name"]);
if (move_uploaded_file($_FILES["file"]["tmp_name"], $uploadfile)) {
echo "File is valid, and was successfully uploaded.\n";
} else {
echo "Possible file upload attack!\n";
}
echo "<pre>";
echo "Here is some more debugging info:";
print_r($_FILES);
echo "\n<hr />\n";
print_r($_POST);
echo "</pre>";
?>
Ref : https://www.php.net/manual/en/class.curlfile.php