对象存储既然没有目录概念,那浏览器端的树状结构怎么实现的?

2020-08-12 19:51:13 +08:00
 tuine

没有目录的概念,ListObjects 会列出所有的文件
阿里云、minio 等浏览器端访问所展示的树状目录结构是怎么实现的?

3697 次点击
所在节点    程序员
14 条回复
xgfan
2020-08-12 19:58:11 +08:00
找到 key,按 /进行 split,不就 ojbk 了吗?
tuine
2020-08-12 20:02:15 +08:00
@xgfan 不是这个意思。比如我想知道根目录有哪些文件及目录?
AlisaDestiny
2020-08-12 20:16:54 +08:00
很明显,你这是把 OOS 当网盘用了,如果你是想把一个项目的文件归类,那么把文件名按一定规则存就行了。
如果你是想区分项目,那么新建 bucket.
tuine
2020-08-12 20:35:12 +08:00
@AlisaDestiny 再用 minio 浏览器端过程中突然想到了,有点好奇
calmzhu
2020-08-12 22:44:33 +08:00
跟操作系统一样的
数据是一个文件,
目录文件也是一种文件。
monsterxx03
2020-08-12 22:58:39 +08:00
一般 api 里会支持 delimiter 参数, 传 delimiter=/ , 就能达成你要的效果了, 比如 openstack swift: https://docs.openstack.org/zh_CN/user-guide/cli-swift-pseudo-hierarchical-folders-directories.html
opengps
2020-08-12 23:00:14 +08:00
学习对象存储的最好方式是看官方帮助文档,你要的答案可以参考阿里云 oss 帮助文档 https://help.aliyun.com/document_detail/130345.html?source=5176.11533457&userCode=ta5rjs45&type=copy
找 OSS 的数据是如何组织的? 章节介绍
polythene
2020-08-12 23:36:20 +08:00
同样的道理,etcd 存的也是个扁平的 key-value 结构,但用户用的时候可能有一些逻辑上的层次关系,把这个层次关系分隔出来,就能对应到操作系统的文件和文件夹的关系了,可以参考我的这个项目 https://github.com/polyrabbit/etcdfs
bbao
2020-08-12 23:49:33 +08:00
@tuine minio 商用提供 web 服务,不购买 license 的话,所有涉及的代码需要开源哟。
lc7029
2020-08-13 01:06:17 +08:00
目录当成文件名
laminux29
2020-08-13 01:47:28 +08:00
非常简单啊,3 步骤:
1.定义一个分隔符号字符串。
2.文件名不允许使用分隔符号。
3.最终文件名等于当前父路径 + 文件名。
widewing
2020-08-13 02:57:06 +08:00
先全部列出来,然后过滤,就这样。所以数量多了效率不行
zhxhwyzh14
2020-08-13 08:39:19 +08:00
腾讯云的对象存储有目录
tuine
2020-08-13 09:39:20 +08:00
@laminux29 一语惊醒梦中人,重新看了下分隔符的定义,豁然开朗。感谢

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/697778

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX