Скрипт позволяет отправить файл на сервер, как делает 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();