透過Python Flask網站程式上傳影像檔到Google Drive雲端硬碟(一)

本文旨在補充《超圖解Python程式設計入門》第7章「儲存檔案:純文字檔、CSV檔與Google試算表」,說明透過Python程式和Python Flask網站應用程式上傳影像檔到Google Drive雲端硬碟的程式寫法。

平常在操作Google Drive雲端硬碟的時候,我們大多是透過瀏覽器登入Google帳號,手動進行操作。而第7章提到,雲端平台提供了「API應用程式介面」,能讓程式自動化登入與操作平台內容,例如,結合ESP32-CAM微電腦板,在觸發照相的時候,登入Google Drive並上傳影像到雲端硬碟的特定資料夾,不需要仰賴人力介入。

UI和API

Google Drive雲端硬碟的網頁介面是提供給人類操作的人機介面,Python(或其他程式語言)不用網頁登入,而是透過API連接。在連接API時,程式必須提供類似使用者帳號、密碼的資訊給雲端平台,平台確認帳號無誤以及帳號的權限(例如,只能讀取某部分資料或者可以修改內容),才能讓程式操作。

「提供憑證驗證操作權限」的方式有兩種,一種是向平台提出資源的要求,向平台取得相當於通行證的令牌(token),如第7章的「使用OAuth協定授予Python程式存取權限」一節的說明;詳細的設置方式,日後會再介紹。

另一種方式比較簡單,就是設定一個服務帳戶,相當於先在平台上新增一個代理人帳號,讓程式透過這個帳號登入與操作雲端平台,這也是書本程式操作Google試算表所採用的方式。本文將先採用這個方式。

你可以沿用書中的帳號設定,或者依照底下的步驟新建一個專案和服務帳戶。

新增Google雲端平台專案

進入Google Cloud雲端平台的控制台,點擊頁面上方的選取專案選單。

Google Cloud雲端平台的控制台

點擊彈出式選單右上方的「新增專案」。

新增豬案

新增專案頁面輸入自訂的專案名稱,筆者將它命名成“Test Drive”,然後按下「建立」。

建立專案

點擊「通知」選單中,Test Drive專案底下的「選取專案」。

選取專案

新增服務帳戶

接下來的步驟是要設定一個提供程式使用的「代理人帳號」。按一下頁面左上角、Google Cloud標誌旁邊的主選單,點擊「IAM與管理」→「服務帳戶」。

新增服務帳戶

點擊頁面上方的「建立服務帳戶」:

建立服務帳戶

在「服務帳戶詳細資料」頁面輸入自訂的服務帳戶名稱以及服務帳戶ID,服務帳號ID請使用英文、數字、連字或底線符號,筆者把id命名成“drive-bot”。 服務帳戶說明欄位隨意填入說明,例如:“存取Google Drive的機器人帳號”。

建立服務帳戶

輸入服務帳戶ID之後,系統會自動產生一個專屬的e-mail,像這樣:drive-bot@test-drive-OOOOO.iam.gserviceaccount.com,請先把它複製下來記在記事本保存,日後Python程式就是透過這個e-mail帳號存取Google雲端硬碟。

按下「完成」,系統將求你設定這個帳號的角色,也就是這個e-mail帳號的操作權限。日後我們將透過它來上傳影像到Google雲端硬碟,所以這個帳號的角色至少需是「編輯者」。

選擇腳色

設定好帳戶的角色之後,直接按下最底部的「完成」。

完成腳色設定

設定服務帳戶的金鑰

在上一步按下「完成」後,畫面將顯示這個專案的服務帳戶,目前只有一個。接著,我們要替這個帳戶設定金鑰,相當於替它設定密碼或通行證。

按一下帳戶列表最右邊的「動作」欄位裡的選單,選擇「管理金鑰」。

管理金鑰

按下「新增金鑰」,選擇「建立新的金鑰」。

建立新的金耀

金鑰類型選擇JSON,點擊「建立」。

JSON金鑰類型

瀏覽器將下載內含金鑰資料的.json檔,日後透過Python程式操作Google雲端硬碟時,必須搭配此服務帳戶的金鑰檔使用。

儲存金耀

關閉上面的彈出式訊息後,網頁上將顯示此金鑰的建立日期和到期日。

金耀資訊

Google Cloud雲端平台的服務帳戶設定到此告一段落。

Posts created 470

2 thoughts on “透過Python Flask網站程式上傳影像檔到Google Drive雲端硬碟(一)

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

Related Posts

Begin typing your search term above and press enter to search. Press ESC to cancel.

Back To Top