laravel-admin 檔案分別上傳(oss,本地)

it_cwc發表於2021-11-24

背景:laravel-admin檔案上傳擴充套件是支援上傳檔案到oss或者本地的,但是在配置oss後檔案不能同時上傳到本地(應該是相關擴充套件的限制)。

目標:實現檔案上傳oss同時檔案本地上傳

實踐

  • 檔案本地上傳

    • 正常使用$form->image($column[, $label])或者$form->file($column[, $label]);
  • oss擴充套件安裝

  • oss表單擴充套件建立

    • 建立 App\Admin\Extensions\AdminOssImageUpload.php;

        namespace App\Admin\Extensions;
      
        use Encore\Admin\Form\Field\File;
        use Illuminate\Support\Facades\Storage;
      
        class AdminOssImageUpload extends File
        {
            protected $view = 'admin::form.file'; // 引用後臺檢視
      
            public function prepare($image)
            {
                // 檔案上傳.......
                $path = $image->getRealPath();
                $filename = $this->getRandStr().time().'.'.$ext; // 自定義檔名稱
                $storage = Storage::disk('oss');
                $storage->putFileAs('/img/', $path, $filename); // 檔案上傳操作
                // 檔案上傳end.......
      
                return $url; // 返回上傳後路由即可
            }
        }
    • 擴充套件註冊,修改 App\Admin\bootstrap.php 檔案

        use App\Admin\Extensions\AdminOssImageUpload;
      
        Form::extend('ossImage', AdminOssImageUpload::class);
    • 使用

        $form->ossImage($column[, $label]);

結果:檔案可正常到oss,同時可以使用本地上傳

參考

本作品採用《CC 協議》,轉載必須註明作者和本文連結
it_cwc

相關文章