【问题标题】:Is a subfolder in an S3 bucket an object?S3 存储桶中的子文件夹是对象吗?
【发布时间】:2011-09-21 05:28:39
【问题描述】:

我正在尝试使用 PHP (Codeigniter) 获取 S3 中子文件夹的大小。如果我在文件夹中指定一个文件,则返回数据,但是如果我指定我得到的文件夹:

[NoSuchKey] The specified key does not exist.

我相信这意味着它找不到文件/文件夹。文件夹不是可以获取大小的对象吗?

我在 Windows 上使用过 S3 浏览器,它列出了文件夹及其大小。

这是我正在使用的代码的 sn-p:

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

任何想法表示赞赏!

谢谢!

【问题讨论】:

    标签: php codeigniter amazon-s3


    【解决方案1】:

    文件夹在 S3 中并不存在。例如,假设您使用 /folder1/folder2/mything.txt 的键创建了一个对象。大多数让您浏览存储桶的工具都会将其显示为 folder1 包含 folder2 包含 mything.txt。

    虽然由于我们习惯使用文件系统,这既方便又熟悉,但这并不是考虑 S3 存储桶及其内容的正确方法。在 S3 中,您只需在存储桶中有一个对象,其键为 /folder1/folder2/mything.txt。

    虽然我不熟悉 PHP,但您的代码背后的基本思想是可靠的。您需要遍历“文件夹”中的所有项目并汇总内容以确定大小。不要忘记遍历文件夹中的文件夹。

    【讨论】:

    • 我也需要开始使用亚马逊云了。但是他们的价格太高了,如果我买一些具有相同功率的专用服务器,我会花更少的钱!
    猜你喜欢
    • 2018-04-19
    • 1970-01-01
    • 2013-01-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多