Browse Source

'改写文件上传,加入自定义配置'

gorden 1 year ago
parent
commit
55071d73c1
3 changed files with 105 additions and 12 deletions
  1. 51 11
      app/admin/controller/UploadFile.php
  2. 5 1
      route/api.php
  3. 49 0
      support/Storage.php

+ 51 - 11
app/admin/controller/UploadFile.php

@@ -3,7 +3,7 @@
 namespace app\admin\controller;
 
 
-use Tinywan\Storage\Storage;
+use support\Storage;
 
 class UploadFile
 {
@@ -14,18 +14,58 @@ class UploadFile
      *
      * @return \support\Response
      */
-    public function upload()
+    public function upload($config)
     {
-        $config = config('plugin.tinywan.storage.app.storage.local');
-        $config['single_limit'] = 123;
-        $res = Storage::uploadFile($config);
-        $data = [
-            'url' => $res[0]['url'],
-            'path' => 'storage/'.date('Ymd').'/'.$res[0]['save_name'],
-            'size' => $res[0]['size'],
-            'mime_type' => $res[0]['mime_type'],
-        ];
+        try {
+            $res = Storage::uploadFile($config);
+            $data = [
+                'url' => $res[0]['url'],
+                'path' => $config['path'] . date('Ymd') . '/' . $res[0]['save_name'],
+                'size' => $res[0]['size'],
+                'mime_type' => $res[0]['mime_type'],
+            ];
+        } catch (\Exception $e) {
+            return json_fail('上传失败:' . $e->getMessage());
+        }
 
         return json_success('上传成功', $data);
     }
+
+    /**
+     * @Desc 上传图片
+     * @Author Gorden
+     * @Date 2024/2/26 17:16
+     *
+     * @return \support\Response
+     */
+    public function image()
+    {
+        $config = [
+            'single_limit' => 1024 * 5,
+            'nums' => 1,
+            'include' => ['jpg', 'jpeg', 'png'],
+            'filePath' => 'storage/images/'
+        ];
+
+        return $this->upload($config);
+    }
+
+    /**
+     * @Desc 上传视频
+     * @Author Gorden
+     * @Date 2024/2/26 17:16
+     *
+     * @return \support\Response
+     */
+    public function video()
+    {
+        $config = [
+            'single_limit' => 1024 * 1024 * 50,
+            'nums' => 1,
+            'include' => ['mp4'],
+            'filePath' => 'storage/videos/'
+        ];
+
+        return $this->upload($config);
+    }
 }

+ 5 - 1
route/api.php

@@ -3,9 +3,13 @@
 use Webman\Route;
 
 Route::group('/admin', function () {
-    Route::post('/upload', [\app\admin\controller\UploadFile::class, 'upload'])->middleware([
+    Route::group('/upload',function (){
+        Route::post('/image', [\app\admin\controller\UploadFile::class, 'image']);
+        Route::post('/video', [\app\admin\controller\UploadFile::class, 'video']);
+    })->middleware([
         \app\middleware\AdminAuthCheck::class
     ]);
+
     /* 鉴权 */
     Route::group('/auth', function () {
         Route::post('/login', [\app\admin\controller\auth\Auth::class, 'login']);

+ 49 - 0
support/Storage.php

@@ -0,0 +1,49 @@
+<?php
+/**
+ * @desc StorageService
+ *
+ * @author Tinywan(ShaoBo Wan)
+ * @date 2022/3/7 20:03
+ */
+declare(strict_types=1);
+
+namespace support;
+
+
+/**
+ * @see Storage
+ * @mixin Storage
+ *
+ * @method static array uploadFile(array $config = [])  上传文件
+ * @method static array uploadBase64(string $base64, string $extension = 'png') 上传Base64文件
+ * @method static array uploadServerFile(string $file_path)  上传服务端文件
+ */
+class Storage extends \Tinywan\Storage\Storage
+{
+    /**
+     * @desc 存储磁盘
+     * @param string|null $name
+     * @param bool $_is_file_upload
+     * @return mixed
+     * @author Tinywan(ShaoBo Wan)
+     */
+    public static function disk(string $name = null, bool $_is_file_upload = true, array $arguments = [])
+    {
+        $storage = $name ?? self::getDefaultStorage();
+        $config = self::getConfig($storage);
+        return new $config['adapter'](array_merge(
+            $config, ['_is_file_upload' => $_is_file_upload], $arguments[0]
+        ));
+    }
+
+    /**
+     * @param $name
+     * @param $arguments
+     * @return mixed
+     * @author Tinywan(ShaoBo Wan)
+     */
+    public static function __callStatic($name, $arguments)
+    {
+        return static::disk(null, true, $arguments)->{$name}(...$arguments);
+    }
+}