2011-06-23 11 views
0

私はPHP(Codeigniter)を使ってS3のサブフォルダのサイズを取得しようとしています。私はそれは、ファイル/フォルダを見つけることができないことを意味信じてS3バケットのサブフォルダはオブジェクトですか?

[NoSuchKey] The specified key does not exist. 

:私は、フォルダ内のファイルを指定した場合、データは私が取得フォルダを指定した場合しかし、返されます。あなたはサイズを得ることができるオブジェクトではないフォルダですか?

私はS3 browser for Windowsを使用しました。これはフォルダとそのサイズをリストしています。

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

任意のアイデアが高く評価:

はここで私が使用しているコードのスニペットです!

ありがとうございます!

答えて

5

フォルダはS3には実際には存在しません。たとえば、キーが/folder1/folder2/mything.txtのオブジェクトを作成するとします。バケットを参照できるツールのほとんどは、mything.txtを含むfolder2を含むfolder1としてこれを表示します。

私たちが慣れ親しんだファイルシステムのためにこれは便利で慣れていますが、S3バケットとその内容について考えるのは正しい方法ではありません。 S3ではバケット内に/folder1/folder2/mything.txtというキーを持つ単一のオブジェクトがあるだけです。

私はPHPに精通していませんが、コードの背後にある基本的な考え方は堅実です。あなたは "フォルダ"内のすべてのアイテムを繰り返し処理し、内容を合計してサイズを決定する必要があります。フォルダ内のフォルダも繰り返し処理することを忘れないでください。

+0

私はアマゾンクラウドを使い始める必要があります。しかし、同じ電力で専用サーバを購入すると、その価格はもっと低くなります! – dynamic

+0

ありがとうございます! –

関連する問題