Google云端存储-ListObjects,未显示文件夹. [英] Google Cloud Storage - ListObjects, folder are not shown.

查看:73
本文介绍了Google云端存储-ListObjects,未显示文件夹.的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在试用Google Cloud Storage,但其C#SDK出现了问题.具体来说,我创建了一个包含文件夹a/,b/,c/(文件位于文件夹中)的存储桶.当我使用时:

I am trying out Google Cloud Storage, and have a problem with its C# SDK. Specifically, I have created a bucket with folder a/, b/, c/ (with files in folder). When I use:

gsutil ls gs://<mybucket>/root/

文件夹正确显示为:

gs://<mybucket>/root/a
gs://<mybucket>/root/b
gs://<mybucket>/root/c

但是,当我使用C#SDK列出文件夹时,

However, when I use C# SDK to list the folder,

var client = StorageClient.Create();
var opt = new ListObjectsOptions() { Delimiter = "/" };
var ret = client.ListObjects("<mybucket>", "root/", opt);
var lst = new List<Google.Apis.Storage.v1.Data.Object>(); 
foreach (var item in ret )
{
    lst.Add(item);
}

结果列表为空(没有返回文件夹).请注意,如果我将上面的代码更改为:

The resultant list is empty (no folder returned). Note if I change the code above to:

var opt = new ListObjectsOptions();

文件夹中的所有文件都可以成功列出.怎么了?带有Delimiter选项的ListObjects可以列出存储桶中的文件夹吗?

All files in the folder can be successfully listed. What is wrong? Can ListObjects with Delimiter options list the folder in the storage bucket?

推荐答案

在API参考中

In API reference Delimiter is described as following:

用于在目录模式"中列出.仅返回名称(除了前缀之外)不包含定界符的对象.

Used to list in "directory mode". Only objects whose names (aside from the prefix) do not contain delimiter will be returned.

基本上,您必须将Delimiter设置为空

Basically you have to set Delimiter to empty

var opt = new ListObjectsOptions() { Delimiter = "" };

否则,它将忽略存储桶中的每个文件夹.只需将Delimiter设置为空,其余代码即可使用.

Otherwise it ignores every folder in your bucket. Just set Delimiter to empty and the rest of your code will work.

这篇关于Google云端存储-ListObjects,未显示文件夹.的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆