<?php
namespace app\store\controller;
use app\store\model\UploadFile;
use app\common\library\storage\Driver as StorageDriver;
use app\store\model\Setting as SettingModel;
class Upload extends Controller
{
private $config;
public function _initialize()
{
parent::_initialize();
$this->config = SettingModel::getItem('storage');
}
public function image($group_id = -1)
{
$StorageDriver = new StorageDriver($this->config);
$StorageDriver->setUploadFile('iFile');
if (!$StorageDriver->upload()) {
return json(['code' => 0, 'msg' => '上传失败' . $StorageDriver->getError()]);
}
$fileName = $StorageDriver->getFileName();
$fileInfo = $StorageDriver->getFileInfo();
$ex_type =explode('/', $fileInfo['type']);
$filetype = $ex_type[0];
$uploadFile = $this->addUploadFile($group_id, $fileName, $fileInfo, $filetype);
return json(['code' => 1, 'msg' => '上传成功', 'data' => $uploadFile]);
}
private function addUploadFile($group_id, $fileName, $fileInfo, $fileType)
{
$storage = $this->config['default'];
$fileUrl = isset($this->config['engine'][$storage]['domain'])
? $this->config['engine'][$storage]['domain'] : '';
$model = new UploadFile;
$model->add([
'group_id' => $group_id > 0 ? (int)$group_id : 0,
'storage' => $storage,
'file_url' => $fileUrl,
'file_name' => $fileName,
'file_size' => $fileInfo['size'],
'file_type' => $fileType,
'extension' => pathinfo($fileInfo['name'], PATHINFO_EXTENSION),
]);
return $model;
}
}