内容简介:因为项目需求,需要把图片上传至阿里云 OSS,我的 Api 接口和后台项目是分开的,都使用的 laravel 框架开发,Api 接入 OSS 这里就不做讨论了,这里主要说一下 laravel-admin 上传阿里 OSS 的问题。网上的一些教程也有非常好的,但只说了使用流程,很少有说碰到的问题之类的情况,这里主要就是讲述我在 laravel-admin 接入阿里 OSS 时所遇到的一些问题,以后还有问题时,也会在这里更新。下面是我的
前言
因为项目需求,需要把图片上传至阿里云 OSS,我的 Api 接口和后台项目是分开的,都使用的 laravel 框架开发,Api 接入 OSS 这里就不做讨论了,这里主要说一下 laravel-admin 上传阿里 OSS 的问题。
网上的一些教程也有非常好的,但只说了使用流程,很少有说碰到的问题之类的情况,这里主要就是讲述我在 laravel-admin 接入阿里 OSS 时所遇到的一些问题,以后还有问题时,也会在这里更新。
开发环境
下面是我的 composer.json 内容(只列出本文需要):
"require": {
"php": ">=7.0.0",
"encore/laravel-admin": "^1.6",
"jacobcyl/ali-oss-storage": "^2.1",
"laravel/framework": "5.5.*",
...
}
具体流程
1、下载合适的第三方包
在 composer.json 文件中的 require 添加 "jacobcyl/ali-oss-storage": "^2.1" ;
或者直接运行 composer require jacobcyl/ali-oss-storage:^2.1 亦可。
2、添加服务提供者
在 config/app.php 文件下增加 Jacobcyl\AliOSS\AliOssServiceProvider::class, ,如下图所示:
3、在 config/filesystems.php 增加 OSS 配置信息
如下:
'disks' => [
'local' => [
'driver' => 'local',
'root' => storage_path('app'),
],
'public' => [
'driver' => 'local',
'root' => storage_path('app/public'),
'url' => env('APP_URL').'/storage',
'visibility' => 'public',
],
's3' => [
'driver' => 's3',
'key' => env('AWS_ACCESS_KEY_ID'),
'secret' => env('AWS_SECRET_ACCESS_KEY'),
'region' => env('AWS_DEFAULT_REGION'),
'bucket' => env('AWS_BUCKET'),
],
// 这里是新增
'oss' => [
'driver' => 'oss',
'access_id' => // 这里是你的 OSS 的 accessId,
'access_key' => // 这里是你的 OSS 的 accessKey,
'bucket' => // 这里是你的 OSS 自定义的存储空间名称,
'endpoint' => 'oss-cn-hangzhou.aliyuncs.com', // 这里以杭州为例
'cdnDomain' => '', // 使用 cdn 时才需要写, https://加上 Bucket 域名
'ssl' => true, // true 使用 'https://' false 使用 'http://'. 默认 false,
'isCName' => false, // 是否使用自定义域名,true: Storage.url() 会使用自定义的 cdn 或域名生成文件 url,false: 使用外部节点生成url
'debug' => false,
],
],
4、在 config/filesystems.php 更改 'default' 配置信息
如下:
'default' => env('FILESYSTEM_DRIVER', 'oss'),
也可以在 env 文件中定义 FILESYSTEM_DRIVER = oss 也可。
5、在 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',
],
],
网上的步骤一般就是到这里了,上面的流程参考: laravel-admin 文件上传 oss ;
问题出现
但是这时候问题就出现了, laravel-admin 本身为了开发者快速开发,本身就完成了一部分功能,当我们使用默认账号 admin 登录进去后,在后台的页面右上角和左上角都有默认的头像显示,这个默认头像是存放在本地 local 下的,在 vendor/encore/laravel-admin/resources/views/partials 下 header.blade.php 和 sidebar.blade.php 两个视图文件中显示,请看下图:
header.blade.php
sidebar.blade.php
而我们在 具体流程 的 5个步骤中已经把上传的配置改成了 oss 了,这时访问后台时,就会抛出一个异常:
一开始我以为是 config/filesystems.php 的 default 还写成 local 会解决,但结果并没有。由于时间的原因,我还没有深入去研究,对于 laravel 框架文件上传的原理,我还是个新手,不过这里放上我的解决方法,如果有更好的解决方案,欢迎下方指正,谢谢!
解决
把 header.blade.php 和 sidebar.blade.php 两个视图文件中的图片的 src 改成阿里云 OSS 存放图片的路径,比如: https://xxx.oss-cn-hangzhou.aliyuncs.com/xxx/xxx/5c77a20012963.jpg ,这张图片就是你想要上传的头像图片地址。
这里只是举个例子,当然这样写还是不方便,万一以后更改,还是需要找到这两个文件手动改,很麻烦,可根据自身需求进行解耦优化,这里就不做讨论了。
道路阻且长,仍需不断前行!
文章参考: [https://blog.csdn.net/zxdf123/article/details/82752145][6] [https://blog.csdn.net/guyaofei/article/details/79918697][7]
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Operating System Algorithms
Nathan Adams、Elisha Chirchir / CreateSpace Independent Publishing Platform / 2017-4-21 / USD 39.15
Operating System Algorithms will walk you through in depth examples of algorithms that you would find in an operating system. Selected algorithms include process and disk scheduling.一起来看看 《Operating System Algorithms》 这本书的介绍吧!