laravel-admin 文件分别上传(oss,本地)

背景: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
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。