1. 程式人生 > >上傳檔案至阿里雲 OSS 空間 « 關於網路那些事...

上傳檔案至阿里雲 OSS 空間 « 關於網路那些事...

這裡記錄如何使用 Laravel 的 storage 上傳檔案到 ali-oss

這裡所使用的 Laravel 版本:5.7.12

安裝擴充

"composer require jacobcyl/ali-oss-storage:^2.1"

設定 config

config/app.php 將下面這行加入 providers

Jacobcyl\AliOSS\AliOssServiceProvider::class,

設定 .env

FILESYSTEM_DRIVER = oss
FILESYSTEM_CLOUD_PATH = # <cloud filesystem http path> 

OSS_ACCESS_KEY_ID = # <Your Aliyun OSS AccessKeyId>
OSS_ACCESS_KEY_SECRET = # <Your Aliyun OSS AccessKeySecret>
OSS_ENDPOINT = # OSS 外網節點或自定義外部域名 <the endpoint of OSS, E.g: oss-cn-hangzhou.aliyuncs.com | custom domain, E.g:img.abc.com>
OSS_BUCKET = # <OSS bucket name>

設定 filesystem.php

config/filesystems.php

'disks'=>[
    ...
    'oss' => [
            'driver'        => 'oss',
                'access_id'     => env('OSS_ACCESS_KEY_ID'),
                'access_key'    => env('OSS_ACCESS_KEY_SECRET'),
                'bucket'        => env('OSS_BUCKET
'), 'endpoint' => env('OSS_ENDPOINT'), //'endpoint_internal' => '<internal endpoint [OSS內網節點] 如:oss-cn-shenzhen-internal.aliyuncs.com>', // v2.0.4 新增配置屬性,如果為空,則預設使用 endpoint 配置(由於內網上傳有點小問題未解決,請大家暫時不要使用內網節點上傳,正在與阿里技術溝通中) 'cdnDomain' => '無設定可指定
false,有設定則輸入 <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> ], ... ]

並且將預設的上傳改為 oss

'default' => 'oss',

使用方式

在 Controller 引用 Storgae

use Illuminate\Support\Facades\Storage;

簡易上傳示範

$folder = 'cms'; //雲端上傳空間資料夾名稱
$path = $request->file('avatar')->store($folder);//取得檔案相對路徑
$results = Storage::url($path);//取回檔案路徑
return $results;

如果你喜歡我們的文章內容,請在這裡按個讚