本页面介绍如何将对象从本地文件系统上传到 Cloud Storage 存储桶。上传的对象包含要存储的数据以及所有关联元数据。如需查看概念性概览(包括如何根据文件大小选择最佳上传方法),请参阅上传和下载。
如需了解如何从内存上传,请参阅从内存上传对象。
所需权限
控制台
如需使用 Google Cloud 控制台完成本指南,您必须拥有适当的 IAM 权限。如果您要上传的存储桶在不是由您创建的项目中,则可能需要项目所有者为您提供包含必要权限的角色。
如需查看特定操作所需权限的列表,请参阅 Google Cloud 控制台的 IAM 权限。
如需查看相关角色的列表,请参阅 Cloud Storage 角色。或者,您也可以创建一个自定义角色,并为其提供具体受限的权限。
命令行
为使用命令行实用程序完成本指南,您必须拥有适当的 IAM 权限。如果您要上传的存储桶在不是由您创建的项目中,则可能需要项目所有者为您提供具有必要权限的角色。
如需查看特定操作所需权限的列表,请参阅 gsutil 命令的 IAM 权限。
如需查看相关角色的列表,请参阅 Cloud Storage 角色。或者,您也可以创建一个自定义角色,并为其提供具体受限的权限。
客户端库
如需使用 Cloud Storage 客户端库完成本指南,您必须拥有适当的 IAM 权限。如果您要上传的存储桶在不是由您创建的项目中,则可能需要项目所有者为您提供包含必要权限的角色。
除非另有说明,否则客户端库请求通过 JSON API 发出,并且需要 JSON 方法的 IAM 权限中列出的权限。如需查看使用客户端库发出请求时调用了哪些 JSON API 方法,请记录原始请求。
如需查看相关 IAM 角色的列表,请参阅 Cloud Storage 角色。或者,您也可以创建一个自定义角色,并为其提供具体受限的权限。
REST API
JSON API
如需使用 JSON API 完成本指南,您必须拥有适当的 IAM 权限。如果您要上传的存储桶在不是由您创建的项目中,则可能需要项目所有者为您提供包含必要权限的角色。
如需查看特定操作所需的权限列表,请参阅 JSON 方法的 IAM 权限。
如需查看相关角色的列表,请参阅 Cloud Storage 角色。或者,您也可以创建一个自定义角色,并为其提供具体受限的权限。
将对象上传到存储桶
如需将对象上传到存储桶,请完成以下步骤:
控制台
- 在 Google Cloud 控制台中,进入 Cloud Storage 存储桶页面。
在存储桶列表中,点击要将对象上传到的存储桶的名称。
在存储分区的对象标签中,执行以下任一操作:
将所需文件从桌面或文件管理器拖放到 Google Cloud 控制台的主窗格中。
点击上传文件按钮,在出现的对话框中选择要上传的文件,然后点击打开。
如需了解如何在 Google Cloud 控制台中获取失败的 Cloud Storage 操作的详细错误信息,请参阅问题排查。
命令行
gcloud
使用 gcloud storage cp
命令:
gcloud storage cp OBJECT_LOCATION gs://DESTINATION_BUCKET_NAME/
其中:
OBJECT_LOCATION
是对象的本地路径。例如Desktop/dog.png
。DESTINATION_BUCKET_NAME
是对象要上传到的存储桶的名称。例如my-bucket
。
如果成功,则响应类似如下示例:
Completed files 1/1 | 164.3kiB/164.3kiB
gsutil
使用 gsutil cp
命令:
gsutil cp OBJECT_LOCATION gs://DESTINATION_BUCKET_NAME/
其中:
OBJECT_LOCATION
是对象的本地路径。例如Desktop/dog.png
。DESTINATION_BUCKET_NAME
是对象要上传到的存储桶的名称。例如my-bucket
。
如果成功,则响应类似如下示例:
Operation completed over 1 objects/58.8 KiB.
客户端库
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 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
Terraform
您可以使用 Terraform 资源上传对象。为此,您必须指定 content
或 source
(您也可以同时指定这两者)。
REST API
JSON API
JSON API 区分了媒体上传(其中请求中仅包含对象数据)和 JSON API 分段上传(其中对象数据和对象元数据均包含在请求中)之间的区别。
媒体上传(不含对象元数据的单一请求上传)
- 从 OAuth 2.0 Playground 获取授权访问令牌。将 Playground 配置为使用您自己的 OAuth 凭据。如需了解相关说明,请参阅 API 身份验证。
使用
cURL
,通过POST
Object 请求调用 JSON API:curl -X POST --data-binary @OBJECT_LOCATION \ -H "Authorization: Bearer OAUTH2_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
。OAUTH2_TOKEN
是您在第 1 步中生成的访问令牌。OBJECT_CONTENT_TYPE
是该对象的内容类型,例如image/png
。BUCKET_NAME
是对象要上传到的存储桶的名称。例如my-bucket
。OBJECT_NAME
是您要为对象指定的网址编码名称。例如,pets/dog.png
的网址编码为pets%2Fdog.png
。
JSON API 分段上传(包含对象元数据的单一请求上传)
- 从 OAuth 2.0 Playground 获取授权访问令牌。将 Playground 配置为使用您自己的 OAuth 凭据。如需了解相关说明,请参阅 API 身份验证。
创建一个包含以下信息的
multipart/related
文件:--BOUNDARY_STRING Content-Type: application/json; charset=UTF-8 OBJECT_METADATA --BOUNDARY_STRING Content-Type: OBJECT_CONTENT_TYPE OBJECT_DATA --BOUNDARY_STRING--
其中:
使用
cURL
,通过POST
Object 请求调用 JSON API:curl -X POST --data-binary @MULTIPART_FILE_LOCATION \ -H "Authorization: Bearer OAUTH2_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
。OAUTH2_TOKEN
是您在第 1 步中生成的访问令牌。BOUNDARY_STRING
是您在第 2 步中定义的边界字符串。例如my-boundary
。MULTIPART_FILE_SIZE
是您在第 2 步中创建的多部分文件的总大小(以字节为单位)。例如2000000
。BUCKET_NAME
是对象要上传到的存储桶的名称。例如my-bucket
。
如果请求成功,服务器将返回 HTTP 200 OK
状态代码以及文件的元数据。
XML API
- 从 OAuth 2.0 Playground 获取授权访问令牌。将 Playground 配置为使用您自己的 OAuth 凭据。如需了解相关说明,请参阅 API 身份验证。
使用
cURL
,通过PUT
Object 请求调用 XML API:curl -X PUT --data-binary @OBJECT_LOCATION \ -H "Authorization: Bearer OAUTH2_TOKEN" \ -H "Content-Type: OBJECT_CONTENT_TYPE" \ "https://storage.googleapis.com/BUCKET_NAME/OBJECT_NAME"
其中:
OBJECT_LOCATION
是对象的本地路径。例如Desktop/dog.png
。OAUTH2_TOKEN
是您在第 1 步中生成的访问令牌。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