我有很多对象已存储在GCS中。现在我想使用Google Cloud Storage Client Library从我的Google App Engine应用程序中获取GCS已经计算过的MD5哈希值,但我找不到任何可以暴露它的内容。
我知道ETag在XML api中包含MD5以实现向后兼容性,但它表示不要依赖于其他任何API。
我知道我可以使用JSON API来访问它们,但我不想写出所有HTTPClient和Auth代码以及JSON解析来获取单个属性。
我知道我也可以在上传时计算MD5,但这些文件已经上传,再次读取它们只计算MD5似乎很浪费。
答案 0 :(得分:2)
MD5哈希不适用于每个对象。虽然大多数对象都有MD5哈希,但许多对象却没有。例如,使用对象组合创建的对象通常没有记录的MD5哈希值。
XML API和JSON API都公开MD5哈希,其中一个可用。如果您不想搞乱HTTP调用,可以使用Java API客户端与GCS JSON API对话。以下是在App Engine上进行设置的说明:https://code.google.com/p/google-api-java-client/wiki/GoogleAppEngine#Getting_Started
您可以使用AppIdentityCredential类来使用应用的凭据来访问Google云端存储对象,当您这样做时,MD5位于对象的“md5Hash”属性中。请注意,它是base64编码而不是十六进制编码。