使用 rest API POST 上传到 google 云存储失败
uploading fails to google cloud storage using rest API POST
我想知道如何使用 rest API 将文件上传到 google 云存储,我不想使用客户端库。
我阅读了文档,但对初学者没有帮助,
任何人都可以告诉我如何一步一步地做到这一点?以及 URL/header/body 格式应该是什么样子,如果也能给我一个非常有帮助的例子。
如果您不打算使用任何帮助程序库并且也是初学者,那么实现上传到 GCS 的最困难的部分可能是对您自己进行身份验证。让我们暂时忽略它。
将 object 上传到 Google 云存储的最简单方法是对 storage.googleapis.com 进行 HTTPS 调用,如下所示:
PUT /your-bucket-name/your-object.txt HTTP/1.1
Authorization: (YOUR ACCESS TOKEN GOES HERE)
Content-Length: 20
Content-Type: text/plain-or-whatever; charset=utf-8
Host: storage.googleapis.com
User-Agent: YourApplication/1.0
This is a test file
这会将 "your-object.txt" 类型 "text/plain-or-whatever" 的文件上传到存储桶 "your-bucket-name",内容为 "This is a test file."
如果您的存储桶允许匿名用户上传文件(您不应该那样做),那么只要不包含授权行就可以了。
现在,由于您真的不想使用任何客户端库,并且可能包括 Google 的 OAuth 库,您将需要自己实施授权,所以让我给你概述。
不过,首先,如果您想立即尝试,请安装 "gcloud" 工具,使用 "gcloud auth login" 登录,然后使用 gcloud auth print-access-token
打印访问令牌。然后使用授权headerAuthorization: Bearer whatever.gcloudprintedout
。这样你就可以快速离开 运行 GCS。但是令牌只会持续一个小时左右,因此您需要真正实现 OAuth。
Google Cloud APIs使用OAuth来处理他们的请求,这是一个强大但不简单的授权机制。关于 Google 的 OAuth 如何工作的大量文档:https://developers.google.com/identity/protocols/OAuth2
还有关于授权 Google 云请求的更多一般信息:https://cloud.google.com/docs/authentication
如果您 运行 您的应用程序是在 App Engine 或 GCE 等 Google 云技术上进行的,则身份验证会稍微容易一些,但我假设您是 运行 这个你自己的机器。我将进一步假设您希望您的应用程序拥有自己的身份,而不是简单地让您登录作为上传流程的一部分。对于这种情况,您需要一个服务帐户,该帐户将具有关联的私钥。
服务帐户的基本流程是,您将为访问凭据创建 JWT 请求,然后使用您的私钥对该请求进行加密签名,然后将该签名请求发送到 Google。它会 return 你一个令牌,稍后可能会传递给你的实际上传请求。您可以继续使用该令牌直到它过期,届时您将需要构建另一个 JWT 请求来请求另一个令牌。
同样,客户端库会完全为您处理整个过程。我正在描述完全自己实现所有内容的方法。
您可以在此处找到相同的示例:
我已经在其中解释了如何使用 rest API.
将文件上传到 google 云存储
谢谢
我想知道如何使用 rest API 将文件上传到 google 云存储,我不想使用客户端库。
我阅读了文档,但对初学者没有帮助,
任何人都可以告诉我如何一步一步地做到这一点?以及 URL/header/body 格式应该是什么样子,如果也能给我一个非常有帮助的例子。
如果您不打算使用任何帮助程序库并且也是初学者,那么实现上传到 GCS 的最困难的部分可能是对您自己进行身份验证。让我们暂时忽略它。
将 object 上传到 Google 云存储的最简单方法是对 storage.googleapis.com 进行 HTTPS 调用,如下所示:
PUT /your-bucket-name/your-object.txt HTTP/1.1
Authorization: (YOUR ACCESS TOKEN GOES HERE)
Content-Length: 20
Content-Type: text/plain-or-whatever; charset=utf-8
Host: storage.googleapis.com
User-Agent: YourApplication/1.0
This is a test file
这会将 "your-object.txt" 类型 "text/plain-or-whatever" 的文件上传到存储桶 "your-bucket-name",内容为 "This is a test file."
如果您的存储桶允许匿名用户上传文件(您不应该那样做),那么只要不包含授权行就可以了。
现在,由于您真的不想使用任何客户端库,并且可能包括 Google 的 OAuth 库,您将需要自己实施授权,所以让我给你概述。
不过,首先,如果您想立即尝试,请安装 "gcloud" 工具,使用 "gcloud auth login" 登录,然后使用 gcloud auth print-access-token
打印访问令牌。然后使用授权headerAuthorization: Bearer whatever.gcloudprintedout
。这样你就可以快速离开 运行 GCS。但是令牌只会持续一个小时左右,因此您需要真正实现 OAuth。
Google Cloud APIs使用OAuth来处理他们的请求,这是一个强大但不简单的授权机制。关于 Google 的 OAuth 如何工作的大量文档:https://developers.google.com/identity/protocols/OAuth2
还有关于授权 Google 云请求的更多一般信息:https://cloud.google.com/docs/authentication
如果您 运行 您的应用程序是在 App Engine 或 GCE 等 Google 云技术上进行的,则身份验证会稍微容易一些,但我假设您是 运行 这个你自己的机器。我将进一步假设您希望您的应用程序拥有自己的身份,而不是简单地让您登录作为上传流程的一部分。对于这种情况,您需要一个服务帐户,该帐户将具有关联的私钥。
服务帐户的基本流程是,您将为访问凭据创建 JWT 请求,然后使用您的私钥对该请求进行加密签名,然后将该签名请求发送到 Google。它会 return 你一个令牌,稍后可能会传递给你的实际上传请求。您可以继续使用该令牌直到它过期,届时您将需要构建另一个 JWT 请求来请求另一个令牌。
同样,客户端库会完全为您处理整个过程。我正在描述完全自己实现所有内容的方法。
您可以在此处找到相同的示例:
我已经在其中解释了如何使用 rest API.
将文件上传到 google 云存储谢谢