本页面介绍如何将对象从本地文件系统上传到 Cloud Storage 存储桶。上传的对象包含要存储的数据以及所有关联元数据。如需查看概念性概览(包括如何根据文件大小选择最佳上传方法),请参阅上传和下载。
如需了解如何从内存上传,请参阅从内存上传对象。
所需的角色
如需获得将对象上传到存储桶所需的权限,请让您的管理员为您授予存储桶的 Storage Object User (roles/storage.objectUser
) IAM 角色。此预定义角色可提供将对象上传到存储桶所需的权限。如需查看所需的确切权限,请展开所需权限部分:
所需权限
storage.objects.create
storage.objects.delete
- 只有覆盖现有对象的上传操作需要此权限。
storage.objects.get
- 仅当您计划使用 Google Cloud CLI 执行本页面上的任务时,才需要此权限。
storage.objects.list
- 仅当您计划使用 Google Cloud CLI 执行本页面上的任务时,才需要此权限。如果您要使用 Google Cloud 控制台验证您已上传的对象,也需要此权限。
如果您打算使用 Google Cloud 控制台执行本页面上的任务,则还需要 storage.buckets.list
权限,Storage Object User (roles/storage.objectUser
) 角色不提供此权限。如需获得此权限,请让您的管理员为您授予项目的 Storage Admin (roles/storage.admin
) 角色。
如需了解如何授予存储桶的角色,请参阅将 IAM 与存储桶搭配使用。
将对象上传到存储桶
如需将对象上传到存储桶,请完成以下步骤:
- 在 Google Cloud 控制台中,前往 Cloud Storage 存储分区页面。
在存储桶列表中,点击要将对象上传到的存储桶的名称。
在存储桶的对象标签页中,执行以下任一操作:
将文件从桌面或文件管理器拖动到 Google Cloud 控制台的主窗格中。
依次点击上传 > 上传文件,在随即显示的对话框中选择要上传的文件,然后点击打开。
如需了解如何在 Google Cloud 控制台中获取有关失败的 Cloud Storage 操作的详细错误信息,请参阅问题排查。
使用 gcloud storage cp
命令:
gcloud storage cpOBJECT_LOCATION gs://DESTINATION_BUCKET_NAME
其中:
OBJECT_LOCATION
是对象的本地路径。例如Desktop/dog.png
。DESTINATION_BUCKET_NAME
是对象要上传到的存储桶的名称。例如my-bucket
。
如果成功,则响应类似如下示例:
Completed files 1/1 | 164.3kiB/164.3kiB
如需了解详情,请参阅 Cloud Storage C++ API 参考文档。
如需向 Cloud Storage 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为客户端库设置身份验证。
如需了解详情,请参阅 Cloud Storage C# API 参考文档。
如需向 Cloud Storage 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为客户端库设置身份验证。
如需了解详情,请参阅 Cloud Storage Go API 参考文档。
如需向 Cloud Storage 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为客户端库设置身份验证。
如需了解详情,请参阅 Cloud Storage Java API 参考文档。
如需向 Cloud Storage 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为客户端库设置身份验证。
以下示例会上传单个对象:
以下示例会同时上传多个对象:
以下示例并发上传具有公共前缀的所有对象:
如需了解详情,请参阅 Cloud Storage Node.js API 参考文档。
如需向 Cloud Storage 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为客户端库设置身份验证。
以下示例会上传单个对象:
以下示例会同时上传多个对象:
以下示例并发上传具有公共前缀的所有对象:
如需了解详情,请参阅 Cloud Storage PHP API 参考文档。
如需向 Cloud Storage 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为客户端库设置身份验证。
如需了解详情,请参阅 Cloud Storage Python API 参考文档。
如需向 Cloud Storage 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为客户端库设置身份验证。
以下示例会上传单个对象:
以下示例会同时上传多个对象:
以下示例并发上传具有公共前缀的所有对象:
如需了解详情,请参阅 Cloud Storage Ruby API 参考文档。
如需向 Cloud Storage 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为客户端库设置身份验证。
您可以使用 Terraform 资源上传对象。必须指定 content
或 source
。
JSON API 区分了媒体上传(其中请求中仅包含对象数据)和 JSON API 分段上传(其中对象数据和对象元数据均包含在请求中)之间的区别。
媒体上传(不含对象元数据的单一请求上传)
安装并初始化 gcloud CLI,以便为
Authorization
标头生成访问令牌。使用
cURL
通过POST
Object 请求调用 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
是对象要上传到的存储桶的名称。例如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-8OBJECT_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
Object 请求调用 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
是对象要上传到的存储桶的名称。例如my-bucket
。
如果请求成功,服务器将返回 HTTP 200 OK
状态代码以及文件的元数据。
安装并初始化 gcloud CLI,以便为
Authorization
标头生成访问令牌。使用
cURL
,通过PUT
Object 请求调用 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
是对象要上传到的存储桶的名称。例如my-bucket
。OBJECT_NAME
是您要为对象指定的网址编码名称。例如,pets/dog.png
的网址编码为pets%2Fdog.png
。
在请求标头中上传对象时,您可以按照前面的示例设置 Content-Type
的相同方式设置其他对象元数据。使用 XML API 时,您只能在写入对象时(例如上传、复制或替换对象时)设置元数据。如需了解详情,请参阅修改对象元数据。
后续步骤
- 了解对象的命名要求。
- 了解如何使用文件夹整理对象。
- 从 Compute Engine 实例转移对象。
- 从云服务提供商或其他在线来源转移数据,例如网址列表。
- 控制哪些人可以访问您的对象和存储桶。
- 查看对象的元数据,包括对象的网址。
自行试用
如果您是 Google Cloud 新手,请创建一个账号来评估 Cloud Storage 在实际场景中的表现。新客户还可获享 $300 赠金,用于运行、测试和部署工作负载。
免费试用 Cloud Storage