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 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!