真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

laravel-admin文件上傳OSS的示例分析-創(chuàng)新互聯(lián)

這篇文章給大家分享的是有關(guān)laravel-admin文件上傳OSS的示例分析的內(nèi)容。小編覺得挺實(shí)用的,因此分享給大家做個(gè)參考,一起跟隨小編過來看看吧。

公司主營(yíng)業(yè)務(wù):成都網(wǎng)站制作、成都網(wǎng)站建設(shè)、外貿(mào)營(yíng)銷網(wǎng)站建設(shè)、移動(dòng)網(wǎng)站開發(fā)等業(yè)務(wù)。幫助企業(yè)客戶真正實(shí)現(xiàn)互聯(lián)網(wǎng)宣傳,提高企業(yè)的競(jìng)爭(zhēng)能力。創(chuàng)新互聯(lián)建站是一支青春激揚(yáng)、勤奮敬業(yè)、活力青春激揚(yáng)、勤奮敬業(yè)、活力澎湃、和諧高效的團(tuán)隊(duì)。公司秉承以“開放、自由、嚴(yán)謹(jǐn)、自律”為核心的企業(yè)文化,感謝他們對(duì)我們的高要求,感謝他們從不同領(lǐng)域給我們帶來的挑戰(zhàn),讓我們激情的團(tuán)隊(duì)有機(jī)會(huì)用頭腦與智慧不斷的給客戶帶來驚喜。創(chuàng)新互聯(lián)建站推出柘榮免費(fèi)做網(wǎng)站回饋大家。

laravel-admin 文件上傳OSS

前言

因?yàn)轫?xiàng)目需求,需要把圖片上傳至阿里云 OSS,我的 Api 接口和后臺(tái)項(xiàng)目是分開的,都使用的 laravel 框架開發(fā),Api 接入 OSS 這里就不做討論了,這里主要說一下 laravel-admin 上傳阿里 OSS 的問題。

網(wǎng)上的一些教程也有非常好的,但只說了使用流程,很少有說碰到的問題之類的情況,這里主要就是講述我在 laravel-admin 接入阿里 OSS 時(shí)所遇到的一些問題,以后還有問題時(shí),也會(huì)在這里更新。

開發(fā)環(huán)境

下面是我的 composer.json 內(nèi)容(只列出本文需要):

"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";

或者直接運(yùn)行 composer require jacobcyl/ali-oss-storage:^2.1 亦可。

2、添加服務(wù)提供者

在 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 自定義的存儲(chǔ)空間名稱,
            'endpoint' => 'oss-cn-hangzhou.aliyuncs.com', // 這里以杭州為例
            'cdnDomain' => '', // 使用 cdn 時(shí)才需要寫, https://加上 Bucket 域名
            'ssl' => true, // true 使用 'https://' false 使用 'http://'. 默認(rèn) false,
            'isCName' => false, // 是否使用自定義域名,true: Storage.url() 會(huì)使用自定義的 cdn 或域名生成文件 url,false: 使用外部節(jié)點(diǎn)生成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',
    ],
],

網(wǎng)上的步驟一般就是到這里了,上面的流程參考:laravel-admin 文件上傳 oss;

問題出現(xiàn)

但是這時(shí)候問題就出現(xiàn)了, laravel-admin 本身為了開發(fā)者快速開發(fā),本身就完成了一部分功能,當(dāng)我們使用默認(rèn)賬號(hào) admin 登錄進(jìn)去后,在后臺(tái)的頁(yè)面右上角和左上角都有默認(rèn)的頭像顯示,這個(gè)默認(rèn)頭像是存放在本地 local 下的,在 vendor/encore/laravel-admin/resources/views/partials 下 header.blade.php 和 sidebar.blade.php 兩個(gè)視圖文件中顯示,請(qǐng)看下圖:

header.blade.php

laravel-admin文件上傳OSS的示例分析

sidebar.blade.php

laravel-admin文件上傳OSS的示例分析

而我們?cè)?具體流程 的 5個(gè)步驟中已經(jīng)把上傳的配置改成了 oss 了,這時(shí)訪問后臺(tái)時(shí),就會(huì)拋出一個(gè)異常:

laravel-admin文件上傳OSS的示例分析

一開始我以為是 config/filesystems.php 的 default 還寫成 local 會(huì)解決,但結(jié)果并沒有。由于時(shí)間的原因,我還沒有深入去研究,對(duì)于 laravel 框架文件上傳的原理,我還是個(gè)新手,不過這里放上我的解決方法,如果有更好的解決方案,歡迎下方指正,謝謝!

解決

把 header.blade.php 和 sidebar.blade.php 兩個(gè)視圖文件中的圖片的 src 改成阿里云 OSS 存放圖片的路徑,比如: https://xxx.oss-cn-hangzhou.aliyuncs.com/xxx/xxx/5c77a20012963.jpg ,這張圖片就是你想要上傳的頭像圖片地址。

這里只是舉個(gè)例子,當(dāng)然這樣寫還是不方便,萬一以后更改,還是需要找到這兩個(gè)文件手動(dòng)改,很麻煩,可根據(jù)自身需求進(jìn)行解耦優(yōu)化,這里就不做討論了。

重新梳理問題

之前遇到這個(gè)問題后一直沒細(xì)研究,直到最近兩天突然發(fā)現(xiàn) laravel-admin 中的原有的管理員列表打開報(bào)錯(cuò),報(bào)錯(cuò)信息如下(主要是這句報(bào)錯(cuò)信息):

laravel-admin文件上傳OSS的示例分析

突然看到這個(gè)錯(cuò),我心里一慌,為什么會(huì)報(bào)文件異常類沒有找到,我首先想到的是不是我之前上傳文件的配置有問題,但是回想一下我的程序后排除這個(gè)可能性。因?yàn)樵谏鲜雠渲猛戤吅?,我已?jīng)成功把圖片上傳至阿里 OSS 上了,這就說明配置是成功的,那為什么還會(huì)報(bào)錯(cuò)呢,我就在想是不是有些細(xì)節(jié)是我沒注意到的,經(jīng)過測(cè)試,果然如此:

laravel-admin 在安裝完成后就已經(jīng)有了系統(tǒng)設(shè)置這些板塊,包括權(quán)限管理;

數(shù)據(jù)庫(kù)的遷移文件中也有了部分?jǐn)?shù)據(jù),其中 admin_users 數(shù)據(jù)表中就有一條數(shù)據(jù);表結(jié)構(gòu)如下:

CREATE TABLE `admin_users` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `username` varchar(190) COLLATE utf8mb4_unicode_ci NOT NULL,
  `password` varchar(60) COLLATE utf8mb4_unicode_ci NOT NULL,
  `name` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,
  `avatar` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
  `remember_token` varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `admin_users_username_unique` (`username`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

其中頭像 avatar 字段的值,也就是 URL 地址是本地的路徑,因?yàn)?laravel-admin 默認(rèn)文件上傳的磁盤是 local,但此時(shí)我已經(jīng)把上傳路徑改為 OSS 了,這就導(dǎo)致文件系統(tǒng)加載不到原有的這張圖,從而報(bào)的文件系統(tǒng)異常。

更新解決

之前我把上述的 header.blade.php 和 sidebar.blade.php 兩個(gè)視圖文件中的圖片地址改了,只是解決一時(shí)問題,其實(shí)這兩個(gè)文件并沒有什么問題,我把兩個(gè)視圖文件還原(上面有圖片),其中 {{ Admin::user()->avatar }} 就是從 admin_users 表中獲取頭像的 URL,只要表中這個(gè) URL 是真實(shí)正確的(也就是 OSS 上的圖片路徑),那就可以成功加載!

感謝各位的閱讀!關(guān)于“l(fā)aravel-admin文件上傳OSS的示例分析”這篇文章就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,讓大家可以學(xué)到更多知識(shí),如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到吧!


本文標(biāo)題:laravel-admin文件上傳OSS的示例分析-創(chuàng)新互聯(lián)
文章網(wǎng)址:http://weahome.cn/article/diijgi.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部