85 lines
2.9 KiB
PHP
85 lines
2.9 KiB
PHP
<?php
|
|
declare (strict_types = 1);
|
|
|
|
namespace app\controller\backend;
|
|
|
|
use app\model\SysSetting;
|
|
use app\service\upload\Upload;
|
|
use think\facade\Lang;
|
|
use think\Request;
|
|
|
|
class UploadController extends BaseController
|
|
{
|
|
protected $type = [
|
|
'file' => 4,
|
|
'image' => 2,
|
|
'video' => 3,
|
|
'mp3' => 5,
|
|
'zip' => 1,
|
|
];
|
|
|
|
/**
|
|
* 保存新建的资源
|
|
*
|
|
* @param \think\Request $request
|
|
* @return \think\Response
|
|
* @throws \app\exception\ModelException
|
|
*/
|
|
public function save(Request $request): \think\Response
|
|
{
|
|
if(request()->isPost()){
|
|
$file = request()->file('file');
|
|
if(empty($file)){
|
|
return jsonReturn(-2,Lang::get('文件不能为空'));
|
|
}
|
|
$seller_id = $this->admin['seller_id'];
|
|
// 查看文件类型
|
|
$fileName = $file->getOriginalName();
|
|
$fileExt = $file->getOriginalExtension();
|
|
$file_type = fileFormat($fileName);
|
|
$fileType = $this->type[$file_type];
|
|
// 附件大小和类型验证
|
|
// 获取上传配置
|
|
$Settings = new SysSetting();
|
|
$uploadSetting = $Settings->getAllCustomArrayData(['parent_id'=>1,'group'=>'upload','status'=>1],'id desc','id,group,title,value')['data'];
|
|
$uploadSetting = getColumnForKeyArray($uploadSetting,'title');
|
|
$limitSize = $uploadSetting[$file_type.'_size']['value'] * 1024; // byte
|
|
$fileSize = $file->getSize(); // 单位byte
|
|
if($fileSize > $limitSize){
|
|
return jsonReturn(-1,Lang::get('文件过大,请修改上传限制或者替换小的文件'));
|
|
}
|
|
$extArr = explode(',',$uploadSetting[$file_type.'_ext']['value']);
|
|
if(!in_array($fileExt,$extArr)){
|
|
return jsonReturn(-2,Lang::get('文件格式错误,请重新上传'));
|
|
}
|
|
// 文件信息提取
|
|
$where = [
|
|
'seller_id' => $seller_id,
|
|
'group' => 'upload',
|
|
'title' => 'storage'
|
|
];
|
|
$place = new SysSetting();
|
|
$type = $place->getSysSetting($where)['data']->toArray()['value'];
|
|
|
|
$upload = new Upload();
|
|
$info = $upload->create($file,$seller_id, $type,$file_type);
|
|
|
|
if ($info) {
|
|
$uploadInfo = $upload->getUploadFileInfo();
|
|
if ($uploadInfo['code'] == 0) {
|
|
$uploadInfo['data']['type'] = $fileType;
|
|
$uploadInfo['data']['size'] = round($fileSize / 1024,2);
|
|
$uploadInfo['data']['mime_type'] = $fileExt;
|
|
}
|
|
return json($uploadInfo);
|
|
}else{
|
|
return jsonReturn(-1, Lang::get('上传失败请重新尝试'));
|
|
}
|
|
}
|
|
return jsonReturn(-3,Lang::get('请求方法错误'));
|
|
}
|
|
|
|
|
|
|
|
}
|