-
安装AliOSS-storage
composer require jacobcyl/ali-oss-storage:^2.1
-
在config/app.php 中providers数组增加代码
Jacobcyl\AliOSS\AliOssServiceProvider::class,
- 在config/filesystem.php 中disks数组中增加代码, 其中access_id, access_key参数都是到阿里云提供
'oss' => [ 'driver' => 'oss', 'access_id' => env('ALIYUN_ACCESS_KEY_ID'), 'access_key' => env('ALIYUN_ACCESS_KEY_SECRET'), 'bucket' => env('ALIYUN_OSS_BUCKET'), 'endpoint' => env('ALIYUN_OSS_ENDPOINT'), 'url' => env('ALIYUN_OSS_URL'), 'ssl' => false, 'isCName' => false, 'debug' => false, ],
设置默认驱动为oss
'default' => env('FILESYSTEM_DRIVER', 'oss'),
-
在config/admin.php中修改upload配置
'upload' => [ // Disk in `config/filesystem.php`. 'disk' => 'oss', // 这里就是指向 disks 下面的 oss 配置 // Image and file upload path under the disk above. 'directory' => [ 'image' => 'images', 'file' => 'files', ], ],
5.在controller中的form 方法中设置字段组件为image或者file, 如果是image,那么文件存在images目录下,如果是file, 那么存在files目录下
$form->image('img_src', __('广告图片'));
这样文件上传后,数据库会保存阿里云返回的路径到img_src字段中
- 阿里云返回的文件链接是相对路径,没有包含阿里云的url, 例如images/d1507dd45df993a69b2e273a349c3e2e.jpg,如果需要把绝对路径保持到数据库,那么可以在model 中的boot方法中修改。例如
class AdModel extends Model {
protected $table = "ad";
public $timestamps = false;
public static function boot(){
// 继承父类
parent::boot();
// updating creating saving 这几个方法你自己选择,打印一下$model看看你就知道怎么取出数据了
static::creating(function ($model) {
$hostUrl= \env("ALIYUN_OSS_URL");
$model->img_src = $hostUrl . $model->img_src;
$model->created_at = time();
});
static::updating(function ($model) {
$hostUrl = \env("ALIYUN_OSS_URL");
$model->img_src = $hostUrl . str_replace($hostUrl,"", $model->img_src);
});
}
}
来源:oschina
链接:https://my.oschina.net/u/4338157/blog/4300884