Document
从文件系统上传对象

从文件系统上传对象

本页面介绍如何将对象从本地文件系统上传到 Cloud Storage 存储桶。上传的对象包含要存储的数据以及所有关联元数据。如需查看概念性概览(包括如何根据文件大小选择最佳上传方法),请参阅上传和下载。 如需了解如何从内存上传,请参阅从内存上传对象。 所需的角色 如需获得将对象上传到存储桶所需

Related articles

How to Fix 403 Forbidden Error in 2024 Angus Cloud death: ‘Euphoria’ actors Zendaya, Maude Apatow mourn How Cloud Seeding In The UAE Is Helping The Planet 5 Best Free VPNs for Android in 2024 (Fast, Trusted & Safe) Current Affairs 2024 for Banking, SSC, Railways and Insurance Exams

本页面介绍如何将对象从本地文件系统上传到 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 与存储桶搭配使用。

将对象上传到存储桶

如需将对象上传到存储桶,请完成以下步骤:

控制台

  1. 在 Google Cloud 控制台中,进入 Cloud Storage 存储桶页面。

    进入“存储桶”

  2. 在存储桶列表中,点击要将对象上传到的存储桶的名称。

  3. 在存储桶的对象标签页中,执行以下任一操作:

    注意:如果您使用的是 Chrome 浏览器,还支持上传文件夹。

如需了解如何在 Google Cloud 控制台中获取失败的 Cloud Storage 操作的详细错误信息,请参阅问题排查。

命令行

使用 gcloud storage cp 命令:

gcloud storage cp  gs://

其中:

如果成功,则响应类似如下示例:

Completed files 1/1 | 164.3kiB/164.3kiB

您可以使用命令标志在对象上传过程中设置固定键和自定义对象元数据。

REST API

JSON API

JSON API 区分了媒体上传(其中请求中仅包含对象数据)和 JSON API 分段上传(其中对象数据和对象元数据均包含在请求中)之间的区别。

  1. 安装并初始化 gcloud CLI,以便为 Authorization 标头生成访问令牌。

    或者,您可以使用 OAuth 2.0 Playground 创建访问令牌,并将其包含在 Authorization 标头中。

  2. 使用 cURL,通过 POST Object 请求调用 JSON API:

    curl -X POST --data-binary @ \
        -H "Authorization: Bearer $(gcloud auth print-access-token)" \
        -H "Content-Type: " \
        "https://storage.googleapis.com/upload/storage/v1/b//o?uploadType=media&name="

    其中:

    • 是对象的本地路径。例如 Desktop/dog.png
    • 是该对象的内容类型,例如 image/png
    • 是对象要上传到的存储桶的名称。例如 my-bucket
    • 是您要为对象指定的网址编码名称。例如,pets/dog.png 的网址编码为 pets%2Fdog.png
  1. 安装并初始化 gcloud CLI,以便为 Authorization 标头生成访问令牌。

    或者,您可以使用 OAuth 2.0 Playground 创建访问令牌,并将其包含在 Authorization 标头中。

  2. 创建一个包含以下信息的 multipart/related 文件:

    --
    Content-Type: application/json; charset=UTF-8
    
    
    
    --
    Content-Type: 
    
    
    ----

    其中:

    • 是您定义的一个字符串,用于标识多部分文件的不同部分。例如 separator_string
    • 是您要包含的文件元数据(采用 JSON 格式)。此部分至少应包含对象的 name 特性,例如 {"name": "myObject"}
    • 是该对象的内容类型,例如 text/plain
    • 是对象的数据。

    例如:

    --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--

  3. 使用 cURL,通过 POST Object 请求调用 JSON API:

    curl -X POST --data-binary @ \
        -H "Authorization: Bearer $(gcloud auth print-access-token)" \
        -H "Content-Type: multipart/related; boundary=" \
        -H "Content-Length: " \
        "https://storage.googleapis.com/upload/storage/v1/b//o?uploadType=multipart"

    其中:

    • 是您在第 2 步中创建的多部分文件的本地路径。例如 Desktop/my-upload.multipart
    • 是您在第 2 步中定义的边界字符串。例如 my-boundary
    • 是您在第 2 步中创建的多部分文件的总大小(以字节为单位)。例如 2000000
    • 是对象要上传到的存储桶的名称。例如 my-bucket

如果请求成功,服务器将返回 HTTP 200 OK 状态代码以及文件的元数据。

XML API

  1. 安装并初始化 gcloud CLI,以便为 Authorization 标头生成访问令牌。

    或者,您可以使用 OAuth 2.0 Playground 创建访问令牌,并将其包含在 Authorization 标头中。

  2. 使用 cURL,通过 PUT Object 请求调用 XML API:

    curl -X PUT --data-binary @ \
        -H "Authorization: Bearer $(gcloud auth print-access-token)" \
        -H "Content-Type: " \
        "https://storage.googleapis.com//"

    其中:

    • 是对象的本地路径。例如 Desktop/dog.png
    • 是该对象的内容类型,例如 image/png
    • 是对象要上传到的存储桶的名称。例如 my-bucket
    • 是您要为对象指定的网址编码名称。例如,pets/dog.png 的网址编码为 pets%2Fdog.png

在请求标头中上传对象时,您可以按照前面的示例设置 Content-Type 的相同方式设置其他对象元数据。使用 XML API 时,您只能在写入对象时(例如上传、复制或替换对象时)设置元数据。如需了解详情,请参阅修改对象元数据。

后续步骤


自行试用

如果您是 Google Cloud 新手,请创建一个账号来评估 Cloud Storage 在实际场景中的表现。新客户还可获享 $300 赠金,用于运行、测试和部署工作负载。

免费试用 Cloud Storage