148 lines
4.3 KiB
PHP
148 lines
4.3 KiB
PHP
|
|
<?php
|
|||
|
|
|
|||
|
|
abstract class BaseController
|
|||
|
|
{
|
|||
|
|
public $post = [];
|
|||
|
|
public $query = [];
|
|||
|
|
public $files = [];
|
|||
|
|
|
|||
|
|
public function __construct()
|
|||
|
|
{
|
|||
|
|
$this->post = json_decode(file_get_contents("php://input"));
|
|||
|
|
$url = $_SERVER['REQUEST_URI'];
|
|||
|
|
$this->query = $_GET;
|
|||
|
|
|
|||
|
|
$this->files = $_FILES;
|
|||
|
|
// var_dump($_FILES);die;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
public function response($data, $status = true)
|
|||
|
|
{
|
|||
|
|
$result = [
|
|||
|
|
'status' => $status,
|
|||
|
|
];
|
|||
|
|
|
|||
|
|
if (!$status) {
|
|||
|
|
$result['errors'] = $data;
|
|||
|
|
} else {
|
|||
|
|
$result['data'] = $data;
|
|||
|
|
}
|
|||
|
|
echo json_encode($result, JSON_UNESCAPED_UNICODE);
|
|||
|
|
exit;
|
|||
|
|
}
|
|||
|
|
public function getUploadedFile($fileKey = 'photo')
|
|||
|
|
{
|
|||
|
|
var_dump($this->files);
|
|||
|
|
die;
|
|||
|
|
if (isset($this->files[$fileKey])) {
|
|||
|
|
return $this->files[$fileKey];
|
|||
|
|
} else {
|
|||
|
|
return null;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
public function getUploadedFiles($fileKeys, $folder)
|
|||
|
|
{
|
|||
|
|
$files = [];
|
|||
|
|
$folder = 'constructor';
|
|||
|
|
$uploadedPaths = [];
|
|||
|
|
foreach ($fileKeys as $fileKey) {
|
|||
|
|
if (isset($this->files[$fileKey])) {
|
|||
|
|
if (is_array($this->files[$fileKey]['name'])) {
|
|||
|
|
$fileCount = count($this->files[$fileKey]['name']);
|
|||
|
|
for ($i = 0; $i < $fileCount; $i++) {
|
|||
|
|
$fileData = [
|
|||
|
|
'name' => $this->files[$fileKey]['name'][$i],
|
|||
|
|
'type' => $this->files[$fileKey]['type'][$i],
|
|||
|
|
'size' => $this->files[$fileKey]['size'][$i],
|
|||
|
|
'tmp_name' => $this->files[$fileKey]['tmp_name'][$i],
|
|||
|
|
'error' => $this->files[$fileKey]['error'][$i]
|
|||
|
|
];
|
|||
|
|
// var_dump('test');die;
|
|||
|
|
$uploadResult = $this->uploadFile($fileData, $folder);
|
|||
|
|
if ($uploadResult) {
|
|||
|
|
$uploadedPaths[$fileKey][] = $uploadResult;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
} else {
|
|||
|
|
$fileData = [
|
|||
|
|
'name' => $this->files[$fileKey]['name'],
|
|||
|
|
'type' => $this->files[$fileKey]['type'],
|
|||
|
|
'size' => $this->files[$fileKey]['size'],
|
|||
|
|
'tmp_name' => $this->files[$fileKey]['tmp_name'],
|
|||
|
|
'error' => $this->files[$fileKey]['error']
|
|||
|
|
];
|
|||
|
|
$uploadResult = $this->uploadFile($fileData, $folder);
|
|||
|
|
if ($uploadResult) {
|
|||
|
|
$uploadedPaths[$fileKey][] = $uploadResult;
|
|||
|
|
}
|
|||
|
|
// var_dump($uploadResult);die;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
return $uploadedPaths;
|
|||
|
|
}
|
|||
|
|
public function uploadFile($file, $folder)
|
|||
|
|
{
|
|||
|
|
$Selectel = SelectelApi::getTokenAndUrl();
|
|||
|
|
$token = $Selectel[0];
|
|||
|
|
$storageUrl = $Selectel[1];
|
|||
|
|
|
|||
|
|
$uploaddir = $_SERVER['DOCUMENT_ROOT'] . "/files/$folder/";
|
|||
|
|
|
|||
|
|
$newPhotos = [];
|
|||
|
|
|
|||
|
|
$originalName = str_replace("0:/", "", $file['name']);
|
|||
|
|
$strArray = explode(".", $originalName);
|
|||
|
|
$ext = end($strArray);
|
|||
|
|
$ext = mb_strtolower($ext);
|
|||
|
|
|
|||
|
|
$name = md5(time() . $originalName) . "." . $ext;
|
|||
|
|
|
|||
|
|
$one = mb_substr($name, 0, 1);
|
|||
|
|
|
|||
|
|
$two = mb_substr($name, 1, 1);
|
|||
|
|
|
|||
|
|
$three = mb_substr($name, 3, 1);
|
|||
|
|
$new_path = "$one/$two/$three/$name";
|
|||
|
|
|
|||
|
|
$fp = $uploaddir . $new_path;
|
|||
|
|
if (!is_dir($_SERVER['DOCUMENT_ROOT'] . "/files/")) {
|
|||
|
|
mkdir($_SERVER['DOCUMENT_ROOT'] . "/files/");
|
|||
|
|
}
|
|||
|
|
if (!is_dir($_SERVER['DOCUMENT_ROOT'] . "/files/" . "$folder")) {
|
|||
|
|
mkdir($_SERVER['DOCUMENT_ROOT'] . "/files/$folder");
|
|||
|
|
}
|
|||
|
|
if (!is_dir($_SERVER['DOCUMENT_ROOT'] . "/files/$folder/$one")) {
|
|||
|
|
mkdir($_SERVER['DOCUMENT_ROOT'] . "/files/$folder/$one");
|
|||
|
|
}
|
|||
|
|
$two = mb_substr($name, 1, 1);
|
|||
|
|
if (!is_dir($_SERVER['DOCUMENT_ROOT'] . "/files/$folder/$one/$two")) {
|
|||
|
|
mkdir($_SERVER['DOCUMENT_ROOT'] . "/files/$folder/$one/$two");
|
|||
|
|
}
|
|||
|
|
$three = mb_substr($name, 3, 1);
|
|||
|
|
if (!is_dir($_SERVER['DOCUMENT_ROOT'] . "/files/$folder/$one/$two/$three")) {
|
|||
|
|
mkdir($_SERVER['DOCUMENT_ROOT'] . "/files/$folder/$one/$two/$three");
|
|||
|
|
}
|
|||
|
|
if (is_uploaded_file($file['tmp_name'])) {
|
|||
|
|
move_uploaded_file($file['tmp_name'], $fp);
|
|||
|
|
} else {
|
|||
|
|
rename($file['tmp_name'], $fp);
|
|||
|
|
}
|
|||
|
|
$SelectelApi = new SelectelApi();
|
|||
|
|
|
|||
|
|
$r = $SelectelApi->uploadFile($storageUrl, $token, $fp, "/$folder/" . $new_path, 'image/' . $ext);
|
|||
|
|
//если выложили в Selectel
|
|||
|
|
|
|||
|
|
if ($r) {
|
|||
|
|
$new_path = "https://data.joywork.ru/$folder/" . $new_path;
|
|||
|
|
//удаляем файл с локального сервера
|
|||
|
|
unlink($fp);
|
|||
|
|
// var_dump($new_path);die;
|
|||
|
|
return $new_path;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
return null;
|
|||
|
|
}
|
|||
|
|
}
|