13

「photos」という新しい Amazon バケットを作成しました。バケットの URL は次のようになります。

www.amazons3.salcaiser.com/photos

たとえば、ファイルを含むサブフォルダーをそのバケットにアップロードします

www.amazons3.salcaiser.com/photos/thumbs/file.jpg

私の質問は、thumbs/新しいバケットと見なされますか、それともオブジェクトですか?

次に、ディレクトリ全体を削除したい場合は、thumbs/最初にその中のすべてのファイルを削除する必要がありますか、それとも一度にすべて削除できますか?

4

4 に答える 4

21

あなたが説明している場合、「写真」はバケツです。S3 にはサブバケットやディレクトリがありません。ディレクトリは、オブジェクトキーでスラッシュを使用してシミュレートされます。「thumbs/file.jpg」はオブジェクト キーで、「thumbs/」はキープレフィックスと見なされます。

Dagon の例は適切で、AWS SDK for PHP の古いバージョン 1.x を使用しています。ただし、複数のオブジェクトを削除するためのヘルパー メソッドを含む最新の2.4.x バージョン AWS SDK for PHPを使用すると、これをより簡単に行うことができます。

<?php

// Include the SDK. This line depends on your installation method.
require 'aws.phar';

use Aws\S3\S3Client;

$s3 = S3Client::factory(array(
    'key'    => 'your-aws-access-key',
    'secret' => 'your-aws-secret-key',
));

// Delete the objects in the "photos" bucket with the a prefix of "thumbs/"
$s3->deleteMatchingObjects('photos', 'thumbs/');
于 2013-08-21T17:38:53.347 に答える
4
//Include s3.php file first in code

if (!class_exists('S3'))
            require_once('S3.php');
        //AWS access info
        if (!defined('awsAccessKey'))
            define('awsAccessKey', 'awsAccessKey');
        if (!defined('awsSecretKey'))
            define('awsSecretKey', 'awsSecretKey');
        //instantiate the class
        $s3 = new S3(awsAccessKey, awsSecretKey);

  if ($s3->deleteObject("bucketname", `filename`)) {
        echo 'deleted';
}
else
{
echo 'no file found';
}
于 2014-03-13T12:44:30.173 に答える