Laravel串接Google Cloud Storage

建立時間: 2017-08-28 20:44:29
更新時間: 2017-08-29 00:21:58

前言

最近用Laravel寫了一個圖片管理功能

完成之後打算把filesystem的disk換成Google Cloud Storage

只是網路上Laravel串接Google Cloud Storage的資料實在有點少

目前看來使用AWS S3的人還是佔多數

不過Cloud Storage跟S3真的是滿像的

所以如果是要從S3轉過來的應該不算太難

 

建立Bucket

首先先到Google Cloud Storage建立一個bucket

級別可依照使用頻率來選擇

 

建立服務憑證

這邊有點抽象

一開始我也搞不太清楚

大概就是需要建立一個服務憑證

我們要使用這個憑證才有權限操作Cloud Storage

詳細流程可以查看官方文件

 

這邊我們只需要照官方文件建立憑證這段即可

首先我們要到API服務>憑證頁來建立憑證

 

接著到建立一個服務帳戶金鑰

角色要選擇儲存空間>Storage管理員

建立成功後回產生一個json

這個json要保存好

到時候要給Laravel串接使用

 

開始串接

首先安裝superbalist/laravel-google-cloud-storage套件

接著照它的文件註冊provider

並在filesystem加入gcs選項

 

接著在.env加入filesystem中需要用到的參數

 GOOGLE_CLOUD_PROJECT_ID=Google Cloud專案ID(在首頁可以找到)
 GOOGLE_CLOUD_KEY_FILE=前面建立的服務憑證json(必須使用絕對路徑)
 GOOGLE_CLOUD_STORAGE_BUCKET=前面建立的bucket名稱
 GOOGLE_CLOUD_STORAGE_PATH_PREFIX=路徑前綴(選用)
 GOOGLE_CLOUD_STORAGE_API_URI=目前沒用到

 

到這邊為止Laravel就擁有Google Cloud Storage這個disk

只要在filesystem寫入檔案時設定disk為gcs就可以了

不過因為圖片上傳到Cloud Storage後還要在啟用為公開才能正常使用

如果沒有將圖片公開會抓不到圖片

 

 

因此還需要在laravel圖片寫入後

將圖片設定為公開

 Storage::disk('gcs')->setVisibility($filename, 'public');

 

這樣圖片一上傳後就可以立即使用