文章
laravel 自定义组件上传文件
·
4 分钟阅读
Laravel Admin 文件同时上传 OSS 和本地
背景
laravel-admin 文件上传扩展支持上传文件到 OSS 或本地,但在配置 OSS 后文件不能同时上传到本地(相关扩展的限制)。
目标
实现文件上传 OSS 同时支持本地上传。
实践
1. 文件本地上传
正常使用:
$form->image($column[, $label]);
// 或
$form->file($column[, $label]);
2. OSS 扩展安装
- 文件上传 OSS 扩展安装
- 配置
app/filesystems.php文件disks.oss,参照扩展文档配置(省略步骤default.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,同时可以使用本地上传。