PHP:Laravel-admin 下图片aliyun oss上传
一:安装扩展
参考:https://github.com/jacobcyl/Aliyun-oss-storage
composer require jacobcyl/ali-oss-storage:^2.1
二:添加服务提供者
在config/app.php 中的 providers 下面 添加:
Jacobcyl\AliOSS\AliOssServiceProvider::class,
在config/filesystems.php 中的 disks 下面添加:
\'oss\' => [ \'driver\' => \'oss\', \'access_id\' => \'<Your Aliyun OSS AccessKeyId>\', \'access_key\' => \'<Your Aliyun OSS AccessKeySecret>\', \'bucket\' => \'<OSS bucket name>\', \'endpoint\' => \'<the endpoint of OSS, E.g: oss-cn-hangzhou.aliyuncs.com | custom domain, E.g:img.abc.com>\', // OSS 外网节点或自定义外部域名 //\'endpoint_internal\' => \'<internal endpoint [OSS内网节点] 如:oss-cn-shenzhen-internal.aliyuncs.com>\', // v2.0.4 新增配置属性,如果为空,则默认使用 endpoint 配置(由于内网上传有点小问题未解决,请大家暂时不要使用内网节点上传,正在与阿里技术沟通中) \'cdnDomain\' => \'<CDN domain, cdn域名>\', // 如果isCName为true, getUrl会判断cdnDomain是否设定来决定返回的url,如果cdnDomain未设置,则使用endpoint来生成url,否则使用cdn \'ssl\' => <true|false> // true to use \'https://\' and false to use \'http://\'. default is false, \'isCName\' => <true|false> // 是否使用自定义域名,true: 则Storage.url()会使用自定义的cdn或域名生成文件url, false: 则使用外部节点生成url \'debug\' => <true|false> ],
更改config/filesystems.php 中的默认文件驱动
\'default\' => env(\'FILESYSTEM_DRIVER\', \'oss\'),// env(\'FILESYSTEM_DRIVER\', \'local\'),
四:配置laravel-admin的 admin.php 配置
修改config/admin.php 的upload 节点:
\'disk\' => \'oss\', // \'disk\' => \'admin\',
五:基本配置完成,测试:
可能存在原有数据图片访问不了的情况导致报错。请先处理。
六:编写wang-edit图片上传类
namespace App\Admin\Controllers; use App\Handlers\ImageUploadHandler; use Carbon\Carbon; use Encore\Admin\Controllers\AdminController; use Illuminate\Http\Request; use Illuminate\Support\Facades\Storage; class UploadController extends AdminController { /** * 富文本编辑器本地上传图片 * @param Request $request * @param ImageUploadHandler $uploader * @return array */ public function upImage(Request $request, ImageUploadHandler $uploader) { // 初始化返回数据,默认是失败的 $data = [ \'errno\' => 1, ]; // 判断是否有上传文件,并赋值给 $file if ($file = $request->upload_file) { // 保存图片到本地 $result = $uploader->save($request->upload_file, \'we_detail\', \'article\'); // 图片保存成功的话 if ($result) { $data[\'data\'][] = $result[\'path\']; $data[\'errno\'] = 0; } } return $data; } /** * 富文本编辑器oss图片上传 */ public function upOssImage(Request $request) { // 初始化返回数据,默认是失败的 $data = [ \'errno\' => 1, ]; // 判断是否有上传文件,并赋值给 $file if ($file = $request->upload_file) { // 保存图片到本地 // $path = \'we_detail\'.$request->upload_file; $directory = Carbon::now()->format(\'Ymd\'); $result = Storage::putFile(\'article/we_detail/\'.$directory, $request->upload_file); // 图片保存成功的话 if ($result) { $data[\'data\'][] = \'https://test.oss-cn-shanghai.aliyuncs.com/\'.$result; $data[\'errno\'] = 0; } } return $data; } }
重新配置admin.php 的wang-edit扩展
extensions\' => [ \'wang-editor\' => [ // 如果要关掉这个扩展,设置为false \'enable\' => true, // 编辑器的配置 \'config\' => [ // `/upload`接口用来上传文件,上传逻辑要自己实现 \'uploadImgServer\' => \'/admin/up-oss-image\', \'uploadFileName\' => \'upload_file\' ] ] ]