Google cloud storage Google存储API-使用“检索对象”/&引用;名义上

Google cloud storage Google存储API-使用“检索对象”/&引用;名义上,google-cloud-storage,Google Cloud Storage,当我试图检索名称中带有“/”的对象时,我会在响应中获得所有文件信息和元数据,但指向文件本身的链接只指向“未找到”。这既适用于我的代码,也适用于在他们的网站上使用API资源管理器 例如,一个名为“testfolder/test.txt”的文件。它在开发人员控制台中正确地显示为一个名为“testfolder/”的伪文件夹和一个名为“test.txt”的内部文件,但在“testfolder/test.txt”或前缀为“testfolder/”的列表上运行时,我遇到了上述问题 我可以在gsutil和控制

当我试图检索名称中带有“/”的对象时,我会在响应中获得所有文件信息和元数据,但指向文件本身的链接只指向“未找到”。这既适用于我的代码,也适用于在他们的网站上使用API资源管理器

例如,一个名为“testfolder/test.txt”的文件。它在开发人员控制台中正确地显示为一个名为“testfolder/”的伪文件夹和一个名为“test.txt”的内部文件,但在“testfolder/test.txt”或前缀为“testfolder/”的列表上运行时,我遇到了上述问题

我可以在gsutil和控制台中很好地检索对象文件。如果使用“/”以外的符号,我还可以使用API很好地检索对象文件。这只是关于“/”的问题,导致API响应中的链接无法正确指向文件

请求:

GET https://www.googleapis.com/storage/v1/b/dschaffertestbucket/o/testfolder%2Ftest.txt?key={YOUR_API_KEY}
答复:

200 OK  
{

 "kind": "storage#object",
 "id": "dschaffertestbucket/testfolder/test.txt/1429992872601000",
 "selfLink": "https://www.googleapis.com/storage/v1/b/dschaffertestbucket/o/testfolder%2Ftest.txt",
 "name": "testfolder/test.txt",
 "bucket": "dschaffertestbucket",
 "generation": "1429992872601000",
 "metageneration": "1",
 "contentType": "application/octet-stream",
 "updated": "2015-04-25T20:14:32.600Z",
 "storageClass": "STANDARD",
 "size": "14",
 "md5Hash": "vLrQ6JkgmdfYKJKKN1ebFQ==",
 "mediaLink": "https://www.googleapis.com/download/storage/v1/b/dschaffertestbucket/o/testfolder%2Ftest.txt?generation=1429992872601000&alt=media",
 "owner": {
  "entity": "user-00b4903a971fb6d48e9e442442b7892dfc55f81ce026106122cb58989d926f00",
  "entityId": "00b4903a971fb6d48e9e442442b7892dfc55f81ce026106122cb58989d926f00"
 },
 "crc32c": "Qcfj8Q==",
 "etag": "CKjLz8miksUCEAE="
}
在这里,您可以发现云存储没有像Windows和Linux那样的文件层次结构,“gsutil”和云存储API只是给人一种错觉


在您的情况下,只需避免在文件名中包含“/”字符,或者使用不同的字符就更容易了。

您能补充一些关于确切问题的详细信息吗?你能用坏链接插入请求负载和响应负载的文本版本吗?检索名称中有正斜杠的对象与检索任何其他对象没有区别(在显示psuedo文件夹的开发人员控制台UI上除外)。如果能够检索不带斜杠的对象,则应该能够检索带斜杠的对象。您是否可以按照Chris的建议发布您的请求/响应有效负载(首先清除身份验证标题)。使用请求/响应更新。