我正在尝试使用PHP(Codeigniter)获取S3中子文件夹的大小。如果我在文件夹中指定了一个文件,则返回数据,但是如果我指定了我得到的文件夹:
[NoSuchKey] The specified key does not exist.
我认为这意味着找不到文件/文件夹。文件夹不是对象,你可以得到大小吗?
我已经在Windows上使用了S3浏览器,并列出了文件夹及其大小。
以下是我正在使用的代码片段:
$userdir = 'userdata/'.$row->name;
$userdata = $this->s3->getObject('bucket_name',$userdir,false);
foreach ($userdata as $name => $val) {
$totalSize += $val['size'];
}
$totalSize = ($totalSize / 1024 / 1024 / 1024);
任何想法都赞赏!
谢谢!
答案 0 :(得分:5)
S3中并不存在文件夹。例如,假设您使用/folder1/folder2/mything.txt的键创建了一个对象。大多数允许您浏览存储桶的工具都会将其显示为包含包含mything.txt的folder2的folder1。
虽然由于我们习惯使用的文件系统,这很方便和熟悉,但是考虑S3存储桶及其内容并不是正确的方法。在S3中,您只需在桶中使用/folder1/folder2/mything.txt键中的单个对象。
虽然我不熟悉PHP,但代码背后的基本思想是可靠的。您需要遍历“文件夹”中的所有项目并总计内容以确定大小。不要忘记迭代文件夹中的文件夹。