Files
2026-03-06 02:27:52 +08:00

124 lines
3.6 KiB
PHP
Executable File

<?php
namespace plugin\admin\app\controller;
use Exception;
use support\Request;
use support\Response;
use support\think\Db;
use Tinywan\Validate\Facade\Validate;
use Shopwwi\WebmanFilesystem\Facade\Storage;
/**
* 附件管理
*
* @icon fa fa-circle-o
*/
class FilesController extends Crud
{
/**
* @var \app\model\Files
*/
protected $model = null;
/**
* 构造函数
* @return void
*/
function __construct()
{
$this->model = new \app\model\Files();
}
function list(Request $request)
{
$list = $this->model->paginate();
return $this->success(__('successful'),$list);
}
function felist(Request $request)
{
$list = $this->model->paginate();
$result = [];
$list->each(function($item)use(&$result){
array_push($result,[
'tag' => "test",
'name' => $item["origin_name"],
//'thumb'=> $item["file_url"],
'url' => $item["file_url"],
]);
});
return json($result);
}
function feupload(Request $request): Response
{
$savePath = $request->post('savePath','files');
$data = $this->base($request, $savePath);
return json([
'link' => $data['file_url'],
]);
}
function upload(Request $request): Response
{
$savePath = $request->post('savePath','files');
$data = [];
try{
$data = $this->base($request, $savePath);
}catch(\Exception $e){
return $this->fail( $e->getMessage());
}
return $this->success( '上传成功', $data);
}
/**
* 获取上传数据
* @param Request $request
* @param $savePath 保存位置
* @return array
* @throws \Exception
*/
protected function base(Request $request, $savePath): mixed
{
// 适配器 local默认是存储在runtime目录下 public默认是存储在public目录下
// 可访问的静态文件建议public
// 默认适配器是local
//Storage::adapter('public');
$validate = Validate::rule('savePath', 'alphaNum');
$data = ['savePath' => $savePath];
if (!$validate->check($data)) {
throw new Exception( '参数错误:'.$validate->getError());
}
$savePath = trim($savePath,'/');
//$savePath = 'upload/'.$savePath;
//$savePath = $savePath;
$file = current($request->file());
if (!$file || !$file->isValid()) {
throw new Exception( '未找到文件');
}
$mimetype = explode(',',Config('site.upload_mimetype'));
$maxsize = Config('site.upload_maxsize')*1024*1024;
$result = Storage::adapter('oss')
->path($savePath)
->size($maxsize)
//->extYes($mimetype)
->upload($file);
$save_datas = [
'admin_id' => admin_id(),
'category' => 'default',
'adapter' => $result->adapter,
'origin_name' => $result->origin_name,
'file_name' => $result->file_name,
'size' => $result->size,
'mime_type' => $result->mime_type,
'extension' => $result->extension,
'file_height' => $result->file_height,
'file_width' => $result->file_width,
'file_url' => $result->file_url,
'sha1' => $result->storage_key ?:sha1_file(public_path($result->file_name)),
'use_count' => 0,
];
return \app\model\Files::create($save_datas);
}
}