Скрипт позволяет отправить файл на сервер, как делает html форма, используя CURL.
Отправка файла через CURL на php
07.06.2018
Отправка (клиентский код)
<?php
class soMain
{
protected function _doCommand($oCommand)
{
$oRet = new stdClass();
$oRet->msg = '';
$oRet->status = 'error';
$oRet->result = '';
$oRet->code = 0;
//$data = '{"cart":{"currency":"RUR","items":[{"feedId":439556...';
$data = $oCommand->data;
//$data = http_build_query($data, '', '&');
$aOptions = array (
CURLOPT_URL => $oCommand->url,
CURLOPT_POST => 1,
CURLOPT_POSTFIELDS => $data,
CURLOPT_RETURNTRANSFER => 1,
CURLOPT_TIMEOUT => 45,
CURLOPT_VERBOSE => 0,
CURLOPT_SSL_VERIFYHOST => 0,
CURLOPT_SSL_VERIFYPEER => 0,
// CURLOPT_COOKIEFILE => $oCommand->sCookieFile,
// CURLOPT_COOKIEJAR => $oCommand->sCookieFile,
);
$ch = curl_init();
curl_setopt_array($ch, $aOptions);
$response = curl_exec($ch);
if ($response)
{
$oRet->status = 'ok';
$oRet->result = $response;
//$oRet->result = json_decode($oRet->result, TRUE);
}
else
{
$oRet->status = 'error';
$oRet->result = 'Curl error: ' . curl_error($ch);
}
$oRet->code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
return $oRet;
}
function go()
{
$path = __DIR__.'/MY/noimage.jpg';
$oCommand = new stdClass();
$oCommand->url = 'http://oddler.ru/test.php';
//$oCommand->sCookieFile = $oShell->sCookieFile;
$oCommand->data = [];
$oCommand->data['task'] = 'upload';
$oCommand->data['uploadFile'] = "@$path";
$oRet = $this->_doCommand($oCommand);
echo '<pre>';
print_r($oRet);
echo '</pre>';
}
}
$oMain = new soMain();
$oMain->go();
Получение и обработка (серверный код)
<?php
class soMain
{
function getVar($name, $Def=NULL)
{
return isset($_REQUEST[$name])?$_REQUEST[$name]:$Def;
}
function go()
{
$task = $this->getVar('task');
if ($task == 'upload')
{
echo '<pre>';
print_r($_FILES);
echo '</pre>';
copy($_FILES['uploadFile']['tmp_name'],__DIR__.'/'.$_FILES['uploadFile']['name']);
}
else
{
?>
<form action="" enctype="multipart/form-data" method="post">
<input type="file" id="uploadFile" name="uploadFile" /> <br/>
<input type="hidden" name="task" value="upload" />
<button>GO</button>
</form>
<?
}
}
}
$oMain = new soMain();
$oMain->go();