This commit is contained in:
2025-11-21 01:42:54 +08:00
parent ff026c6f32
commit f89196c73c
1953 changed files with 9 additions and 15246 deletions
@@ -0,0 +1,127 @@
<?php
namespace plugin\admin\app\controller;
use support\Request;
use support\Response;
use support\think\Db;
use Shopwwi\WebmanFilesystem\Facade\Storage;
/**
* 附件管理
*
* @icon fa fa-circle-o
*/
class AttachmentController extends Crud
{
function list(Request $request)
{
return view('', [
]);
}
function feupload(Request $request): Response
{
$file = current($request->file());
if (!$file || !$file->isValid()) {
return $this->fail('未找到文件');
}
$data = $this->base($request, '/upload/files/' . date('Ymd'));
return json([
'link' => $data['url'],
]);
}
function upload(Request $request): Response
{
$file = current($request->file());
if (!$file || !$file->isValid()) {
return $this->fail('未找到文件');
}
$data = $this->base($request, '/upload/files/' . date('Ymd'));
//cp($data);
return $this->json(0, '上传成功', [
'url' => $data['realpath'],
'name' => $data['name'],
'fullurl' => $data['url'],
'size' => $data['size'],
]);
}
/**
* 获取上传数据
* @param Request $request
* @param $relative_dir
* @return array
* @throws \Exception
*/
protected function base(Request $request, $relative_dir): array
{
// 适配器 local默认是存储在runtime目录下 public默认是存储在public目录下
// 可访问的静态文件建议public
// 默认适配器是local
//Storage::adapter('public');
$relative_dir = ltrim($relative_dir, '\\/');
$file = current($request->file());
try {
if (!$file || !$file->isValid()) {
throw new \support\exception\BusinessException('未找到上传文件', 400);
}
$ext = $file->getUploadExtension() ?: null;
$mime_type = $file->getUploadMimeType();
$file_name = $file->getUploadName();
$file_size = $file->getSize();
if (!$ext && $file_name === 'blob') {
[$___image, $ext] = explode('/', $mime_type);
unset($___image);
}
$ext = strtolower($ext);
$ext_forbidden_map = ['php', 'php3', 'php5', 'css', 'js', 'html', 'htm', 'asp', 'jsp'];
if (in_array($ext, $ext_forbidden_map)) {
throw new \support\exception\BusinessException('不支持该格式的文件上传', 400);
}
$mimetype = explode(',',Config('site.mimetype'));
$result = Storage::adapter('public')
->path($relative_dir)
->size(1024 * 1024 * 5)
->extYes($mimetype)
//->extNo(['image/png'])
->upload($file);
} catch (\Exception $e) {
return [
'code' => 1,
'msg' => $e->getMessage()
];
}
// cp($result);
// stdClass Object
// (
// [adapter] => public
// [origin_name] => OIP-C (1).jpg
// [file_name] => upload/files/20250527/eb14c1bfe6e7a22415bbbb30dfe90ba1_6834f0974db76.jpg
// [storage_key] => eb14c1bfe6e7a22415bbbb30dfe90ba1_6834f0974db76
// [file_url] => //luru.oss-ap-southeast-1.aliyuncs.com/upload/files/20250527/eb14c1bfe6e7a22415bbbb30dfe90ba1_6834f0974db76.jpg
// [size] => 15370
// [mime_type] => image/jpeg
// [extension] => jpg
// [file_height] => 474
// [file_width] => 474
// )
return [
'code' => 0,
'url' => $result->file_url,
'name' => $result->origin_name,
'realpath' => '/'.$result->file_name,
'size' => $result->size,
'mime_type' => $result->mime_type,
'image_with' => $result->file_width,
'image_height' => $result->file_height,
'ext' => $result->extension,
];
}
}