mradang / laravel-oss
laravel-oss
v2.8.0
2025-03-11 16:04 UTC
Requires
- aliyuncs/oss-sdk-php: ^2.4
- laravel/framework: ^10.0|^11.0|^12.0
Requires (Dev)
- laravel/pint: ^1.5
- orchestra/testbench: ^10.0
README
安装
$ composer require mradang/laravel-oss -vvv
可选项
- 发布配置文件
$ php artisan vendor:publish --provider="mradang\\LaravelOss\\LaravelOssServiceProvider"
配置
- 添加 .env 环境变量,使用默认值时可省略
OSS_ACCESS_KEY_ID=
OSS_ACCESS_KEY_SECRET=
# 接入点应使用 CName 绑定自有域名
OSS_ENDPOINT=
OSS_BUCKET=
# 限定上传目录
OSS_DIR=
# 上传文件最大限制,默认 2MB
OSS_MAXSIZE=2MB
# 回调地址,默认当前用户访问地址:request()->getSchemeAndHttpHost()
OSS_CALLBACK=
- 添加对象跟踪任务
修改 laravel 工程 app\Console\Kernel.php 文件,在 schedule 函数中增加
// 跟踪 OSS 对象上传 $schedule ->call(function () { try { \mradang\LaravelOss\Services\OssService::scheduleTracker(); } catch (\Exception $e) { logger()->warning('OSS 对象跟踪失败:'.$e->getMessage()); } }) ->cron('* * * * *') ->name('OssService::scheduleTracker') ->withoutOverlapping();
添加的内容
添加的数据表迁移
- oss_objects
- oss_tracks
添加的路由
- post /api/laravel_oss/callback
使用
模型 Trait
use mradang\LaravelOss\Traits\OssObjectTrait;
模型 boot
模型删除时自动清理 OSS 对象
模型实例方法
- array ossobjectUploadParams($extension, $group, array $data = []) 为模型生成前端直传参数
- morphMany ossobjects 对象关联(一对多)
- mradang\LaravelOss\Models\OssObject ossobjectFind($name) 查找对象
- void ossobjectDelete($name) 删除对象(异步)
- void ossobjectClear($group = null) 清空模型的全部对象
- void ossobjectSaveSort(array $data) 保存对象排序
- mradang\LaravelOss\Models\OssObject ossobjectCreateByFile($filename, $group, array $data = []) 上传本地文件
- mradang\LaravelOss\Models\OssObject ossobjectCreateByUrl($url, $group, array $data = []) 上传 Url 文件
- void ossobjectAsyncCreateByUrl($url, $group, array $data = []) 异步上传 Url 文件
- void ossobjectUpdateData(int $id, array $data) 更新附加数据
模型静态方法
// $timeout 生成 URL 的有效期,最长 3600 秒(1 小时) // $options OSS 数据处理选项 // -- 图片处理 $options['x-oss-process'] = "image/resize,h_${height},w_${width}";
- string ossobjectGenerateUrl($object, $timeout = 300, $options = null) 为对象生成访问链接