Является ли подпапка в S3-контейнере объектом? - PullRequest
0 голосов
/ 23 июня 2011

Я пытаюсь получить размер подпапки в S3, используя PHP (Codeigniter).Если я укажу файл в папке, данные будут возвращены, однако, если я укажу папку, которую я получу:

[NoSuchKey] The specified key does not exist.

Что, по моему мнению, означает, что он не может найти файл / папку.Разве папка не является объектом, размер которого вы можете получить?

Я использовал браузер S3 для Windows, в котором перечислены папки и их размеры.

Вот фрагмент кода I 'м:

$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);

Любые идеи приветствуются!

Спасибо!

1 Ответ

5 голосов
/ 23 июня 2011

Папки на самом деле не существуют в S3. Например, допустим, вы создаете объект с ключом /folder1/folder2/mything.txt. Большинство инструментов, которые позволяют вам просматривать корзину, показывают это как folder1, содержащее folder2, содержащий mything.txt.

Хотя это удобно и знакомо из-за файловых систем, к которым мы привыкли, это неправильный способ думать о блоках S3 и их содержимом. В S3 у вас просто есть один объект в корзине с ключом /folder1/folder2/mything.txt.

Хотя я не знаком с PHP, основная идея вашего кода тверда. Вам нужно перебрать все элементы в «папке» и суммировать содержимое, чтобы определить размер. Не забудьте перебирать папки внутри ваших папок.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...