laravel-admin 文件上传阿里OSS

栏目: PHP · 发布时间: 5年前

内容简介:因为项目需求,需要把图片上传至阿里云 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, ,如下图所示:

laravel-admin 文件上传阿里OSS

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/partialsheader.blade.phpsidebar.blade.php 两个视图文件中显示,请看下图:

header.blade.php

laravel-admin 文件上传阿里OSS

sidebar.blade.php

laravel-admin 文件上传阿里OSS

而我们在 具体流程 的 5个步骤中已经把上传的配置改成了 oss 了,这时访问后台时,就会抛出一个异常:

laravel-admin 文件上传阿里OSS

一开始我以为是 config/filesystems.phpdefault 还写成 local 会解决,但结果并没有。由于时间的原因,我还没有深入去研究,对于 laravel 框架文件上传的原理,我还是个新手,不过这里放上我的解决方法,如果有更好的解决方案,欢迎下方指正,谢谢!

解决

header.blade.phpsidebar.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]

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Python自然语言处理

Python自然语言处理

(英)伯德、(英)克莱因、(美)洛普 / 东南大学出版社 / 2010-6 / 64.00元

《Python自然语言处理(影印版)》提供了非常易学的自然语言处理入门介绍,该领域涵盖从文本和电子邮件预测过滤,到自动总结和翻译等多种语言处理技术。在《Python自然语言处理(影印版)》中,你将学会编写Python程序处理大量非结构化文本。你还将通过使用综合语言数据结构访问含有丰富注释的数据集,理解用于分析书面通信内容和结构的主要算法。 《Python自然语言处理》准备了充足的示例和练习,......一起来看看 《Python自然语言处理》 这本书的介绍吧!

在线进制转换器
在线进制转换器

各进制数互转换器

XML、JSON 在线转换
XML、JSON 在线转换

在线XML、JSON转换工具