阿里云OSS中的目錄/文件夾概念
OSS中文件夾的概念僅是一個(gè)邏輯概念,在通過API/SDK的方式設(shè)置文件夾的時(shí)候可以指定object對(duì)應(yīng)的key值包括前面的目錄即可實(shí)現(xiàn)該功能。例如,定義object的key為abc/1.jpg就會(huì)在該bucket下創(chuàng)建一個(gè)abc的文件夾,而在文件夾下即會(huì)有一個(gè)1.jpg的文件。在控制臺(tái)上也可以通過新建文件夾按鈕來創(chuàng)建文件夾。
OSS中的文件夾其實(shí)是一個(gè)大小為0KB的空文件。因此,用戶創(chuàng)建一個(gè)key值為1/的object就會(huì)定義文件夾1;并且如果用戶創(chuàng)建文件abc/1.jpg,系統(tǒng)是不會(huì)創(chuàng)建abc/這個(gè)文件的,因此在刪除abc/1.jpg后將不會(huì)再存在abc這個(gè)文件夾。
由于OSS采用的是分布式存儲(chǔ)的方式,object并不是根據(jù)文件夾進(jìn)行物理存儲(chǔ)的。也就是說并不是一個(gè)文件夾下的所有的文件都會(huì)存儲(chǔ)在一起的。在后端存儲(chǔ)的過程中不同的文件夾的文件僅僅是key值的前綴不一樣。因此這種架構(gòu)下就會(huì)導(dǎo)致無法很方便的統(tǒng)計(jì)某個(gè)文件夾下的匯總信息,如文件夾大小、文件夾PV數(shù)等。而想要遍歷某個(gè)文件夾下的所有的文件也需要首先通過ListObject接口獲取文件夾下的所有文件的key值(這里需要通過prefix指定文件夾),然后再進(jìn)行操作。
