文章

laravel 自定义组件上传文件

· 4 分钟阅读

Laravel Admin 文件同时上传 OSS 和本地

背景

laravel-admin 文件上传扩展支持上传文件到 OSS 或本地,但在配置 OSS 后文件不能同时上传到本地(相关扩展的限制)。

目标

实现文件上传 OSS 同时支持本地上传。

实践

1. 文件本地上传

正常使用:

$form->image($column[, $label]);
// 或
$form->file($column[, $label]);

2. OSS 扩展安装

3. 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);

        return $url;
    }
}

4. 扩展注册

修改 App\Admin\bootstrap.php 文件:

use App\Admin\Extensions\AdminOssImageUpload;

Form::extend('ossImage', AdminOssImageUpload::class);

5. 使用

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

结果

文件可正常上传到 OSS,同时可以使用本地上传。

参考