本頁說明如何從本機檔案系統將物件上傳至 Cloud Storage bucket。上傳的物件包含您要儲存的資料,以及任何相關聯的中繼資料。如需概念總覽,包括如何根據檔案大小選擇最佳上傳方法,請參閱「物件上傳」。
如要瞭解如何從記憶體上傳,請參閱「從記憶體上傳物件」。
必要的角色
如要取得將物件上傳至 bucket 所需的權限,請要求管理員授予您 bucket 的 Storage 物件使用者 (roles/storage.objectUser) IAM 角色。這個預先定義的角色具備將物件上傳至值區所需的權限。如要查看確切的必要權限,請展開「Required permissions」(必要權限) 部分:
所需權限
storage.objects.createstorage.objects.delete- 只有在上傳作業會覆寫現有物件時,才需要這項權限。
storage.objects.get- 只有在您打算使用 Google Cloud CLI 執行本頁工作時,才需要這項權限。
storage.objects.list- 只有在您打算使用 Google Cloud CLI 執行本頁工作時,才需要這項權限。如要使用 Google Cloud 控制台驗證上傳的物件,也必須具備這項權限。
如果您打算使用 Google Cloud 控制台執行本頁的工作,也需要 storage.buckets.list 權限,但 Storage 物件使用者 (roles/storage.objectUser) 角色不含這項權限。如要取得這項權限,請要求管理員授予您專案的「儲存空間管理員」(roles/storage.admin) 角色。
如要瞭解如何授予 bucket 角色,請參閱「在 bucket 上設定及管理 IAM 政策」。
將物件上傳至 bucket
請按照下列步驟,將物件上傳至 bucket:
控制台
- 前往 Google Cloud 控制台的「Cloud Storage bucket」頁面。
在 bucket 清單中,點選要上傳物件的 bucket 名稱。
在值區的「Objects」(物件) 分頁中,執行下列任一操作:
將檔案從桌面或檔案管理工具拖曳到 Google Cloud 控制台的主窗格。
依序點選「上傳」 >「上傳檔案」,在隨即顯示的對話方塊中選取要上傳的檔案,然後點選「開啟」。
如要瞭解如何在 Google Cloud 控制台中取得 Cloud Storage 作業失敗的詳細錯誤資訊,請參閱「疑難排解」一文。
指令列
使用 gcloud storage cp 指令:
gcloud storage cp OBJECT_LOCATION gs://DESTINATION_BUCKET_NAME
其中:
OBJECT_LOCATION是物件的本機路徑。例如:Desktop/dog.png。DESTINATION_BUCKET_NAME是您要上傳物件的 bucket 名稱。例如:my-bucket。
如果成功,回應會類似以下範例:
Completed files 1/1 | 164.3kiB/164.3kiB
用戶端程式庫
C++
詳情請參閱 Cloud Storage C++ API 參考文件。
如要向 Cloud Storage 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
C#
詳情請參閱 Cloud Storage C# API 參考文件。
如要向 Cloud Storage 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
Go
詳情請參閱「Cloud Storage Go API 參考文件」。
如要向 Cloud Storage 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
Java
詳情請參閱「Cloud Storage Java API 參考文件」。
如要向 Cloud Storage 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
以下範例會上傳個別物件:
下列範例會同時上傳多個物件:
以下範例會同時上傳具有相同前置字串的所有物件:
Node.js
詳情請參閱 Cloud Storage Node.js API 參考文件。
如要向 Cloud Storage 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
以下範例會上傳個別物件:
下列範例會同時上傳多個物件:
下列範例會同時上傳具有共同前置字串的所有物件:
PHP
詳情請參閱 Cloud Storage PHP API 參考文件。
如要向 Cloud Storage 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
Python
詳情請參閱 Cloud Storage Python API 參考文件。
如要向 Cloud Storage 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
以下範例會上傳個別物件:
下列範例會同時上傳多個物件:
下列範例會同時上傳具有共同前置字串的所有物件:
Ruby
詳情請參閱 Cloud Storage Ruby API 參考文件。
如要向 Cloud Storage 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
Rust
Terraform
您可以使用 Terraform 資源上傳物件。必須指定 content 或 source。
REST API
JSON API
JSON API 會區分媒體上傳 (要求中只包含物件資料) 和 JSON API 多部分上傳 (要求中包含物件資料和物件中繼資料)。
媒體上傳 (不含物件中繼資料的單一要求上傳)
安裝並初始化 gcloud CLI,以便為
Authorization標頭產生存取權杖。使用
cURL來透過POST物件要求呼叫 JSON API:curl -X POST --data-binary @OBJECT_LOCATION \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: OBJECT_CONTENT_TYPE" \ "https://storage.googleapis.com/upload/storage/v1/b/BUCKET_NAME/o?uploadType=media&name=OBJECT_NAME"其中:
OBJECT_LOCATION是物件的本機路徑。例如:Desktop/dog.png。OBJECT_CONTENT_TYPE是物件的內容類型。例如:image/png。BUCKET_NAME是要上傳物件的 bucket 名稱。例如:my-bucket。OBJECT_NAME是您要為物件指定的網址編碼名稱。例如pets/dog.png,網址編碼為pets%2Fdog.png。
JSON API 多部分上傳 (包含物件中繼資料的單一要求上傳)
安裝並初始化 gcloud CLI,以便為
Authorization標頭產生存取權杖。建立
multipart/related檔案,並加入下列資訊:--BOUNDARY_STRING Content-Type: application/json; charset=UTF-8 OBJECT_METADATA --BOUNDARY_STRING Content-Type: OBJECT_CONTENT_TYPE OBJECT_DATA --BOUNDARY_STRING--
其中:
BOUNDARY_STRING是您定義的字串,用於識別多部分檔案的不同部分。例如:separator_string。OBJECT_METADATA是您要為檔案加入的中繼資料,採用 JSON 格式。這個部分至少應包含物件的name屬性,例如{"name": "myObject"}。OBJECT_CONTENT_TYPE是物件的內容類型。例如:text/plain。OBJECT_DATA是物件的資料。
例如:
--separator_string Content-Type: application/json; charset=UTF-8 {"name":"my-document.txt"} --separator_string Content-Type: text/plain This is a text file. --separator_string--使用
cURL來透過POST物件要求呼叫 JSON API:curl -X POST --data-binary @MULTIPART_FILE_LOCATION \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: multipart/related; boundary=BOUNDARY_STRING" \ -H "Content-Length: MULTIPART_FILE_SIZE" \ "https://storage.googleapis.com/upload/storage/v1/b/BUCKET_NAME/o?uploadType=multipart"其中:
MULTIPART_FILE_LOCATION是您在步驟 2 建立的多部分檔案本機路徑。例如:Desktop/my-upload.multipart。BOUNDARY_STRING是您在步驟 2 定義的邊界字串。例如:my-boundary。MULTIPART_FILE_SIZE是您在步驟 2 建立的多部分檔案總大小,以位元組為單位。例如:2000000。BUCKET_NAME是要上傳物件的 bucket 名稱。例如:my-bucket。
如果要求成功,伺服器會傳回 HTTP 200 OK 狀態碼,以及檔案的中繼資料。
XML API
安裝並初始化 gcloud CLI,以便為
Authorization標頭產生存取權杖。使用
cURL透過PUT物件要求叫用 XML API:curl -X PUT --data-binary @OBJECT_LOCATION \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: OBJECT_CONTENT_TYPE" \ "https://storage.googleapis.com/BUCKET_NAME/OBJECT_NAME"其中:
OBJECT_LOCATION是物件的本機路徑。例如:Desktop/dog.png。OBJECT_CONTENT_TYPE是物件的內容類型。例如:image/png。BUCKET_NAME是要上傳物件的 bucket 名稱。例如:my-bucket。OBJECT_NAME是您要為物件指定的網址編碼名稱。例如pets/dog.png,網址編碼為pets%2Fdog.png。
您可以在要求標頭中設定其他物件中繼資料,做為物件上傳的一部分,方法與前一個範例設定 Content-Type 的方式相同。使用 XML API 時,只能在寫入物件時設定中繼資料,例如上傳、複製或取代物件時。詳情請參閱「編輯物件中繼資料」。
將目錄內容上傳至 bucket
如要將目錄內容複製到 bucket,請完成下列步驟:
指令列
使用加上 --recursive 旗標的 gcloud storage rsync 指令:
gcloud storage rsync --recursive LOCAL_DIRECTORY gs://DESTINATION_BUCKET_NAME/FOLDER_NAME
其中:
LOCAL_DIRECTORY是目錄的路徑,其中包含要上傳為物件的檔案。例如:~/my_directory。DESTINATION_BUCKET_NAME是要上傳物件的 bucket 名稱。例如:my-bucket。FOLDER_NAME(選用) 是 bucket 內要上傳物件的資料夾名稱。例如:my-folder。
如果成功,回應會類似以下範例:
Completed files 1/1 | 5.6kiB/5.6kiB
後續步驟
- 瞭解物件的命名規定。
- 瞭解如何使用資料夾整理物件。
- 從 Compute Engine 執行個體傳輸物件。
- 從雲端服務供應商或其他線上來源轉移資料,例如網址清單。
- 控制可以存取您物件和值區的對象。
- 查看物件的中繼資料,包括物件的網址。
歡迎試用
如果您未曾使用過 Google Cloud,歡迎建立帳戶,親自體驗實際使用 Cloud Storage 平台的成效。新客戶還能獲得價值 $300 美元的免費抵免額,用於執行、測試及部署工作負載。
免費試用 Cloud Storage