5

私は AWS API に取り組んでおり、既存のオブジェクト (FOLDERS) のチェックに問題があります。この
質問に答え ましたが、最新の更新された SDK を使用しているため、役に立ちません。SDK を検索したところ、動作するはずのこれが見つかりましたが、どこにも関数定義を見つけることができません。私のファイルにはこの関数がありません。これが私のS3.phpクラスです。 また、S3 はフォルダー構造をサポートしていないことを読みましたが、フラット ファイル システムにより、視覚的にフォルダーに格納されているように見えるだけです。ここで、S3 上のフォルダーを検索する必要がある場合、バケットのルートを確認するだけでよいでしょうか? 私はこのように意味します
doesObjectExists3.php
1024x768

     $chkFileExist = $s3->doesObjectExist($bucketName,'1024x768');

フォルダーが存在するかどうかを確認する必要があります。そうでない場合は、API 関数を使用してその場で動的に作成する必要があります。存在する場合は、そこにファイルを保存します。
この機能を実現するために助けが必要です。経験のある方は解決策を提案してください。
ご清聴ありがとうございました。

4

3 に答える 3

7

「フラットファイルシステム」全体についてもう少し考えてみてください。S3 API とのインターフェイスとして PHP を書き始めた当初は、ディレクトリと各フォルダー内のファイルを反復処理できると期待していました。それはそれがどのように機能するかではありません!

これは、あなたが参照した質問への回答の 1 つである Ryan Parman からのものです。

「S3 はフラット ファイル システムです。フォルダはありません。ファイル名にスラッシュが含まれているだけです。一部の S3 ブラウジング ツールでは、ソフトウェアに「フォルダ」の概念を表示することを選択していますが、それらはふりをしているだけです。

「/albums/Carcassonne-France/」は、その名前の単一のオブジェクトがないため、false を返します。

次のパスを持つオブジェクトがある場合:

s3://myBucket/myFolder/taco.jpg

s3://myBucket/myFolder/jambox.jpg

オブジェクトの存在を確認するs3://myBucket/myFolder/と、その特定の名前のオブジェクトがないため、false が返されます。

フォルダーが存在しない場合にフォルダーを作成する理由を知っておくと役立つ場合がありますが、S3 の特定の「フォルダー」にオブジェクトを配置する場合は、putObject()メソッドを使用できます。

于 2013-07-16T16:00:39.013 に答える
2

@ダンは正しいです。ただし、S3で PHP の組み込みファイル システム関数を使用できるようにするS3 StreamWrapperを確認することは価値があるかもしれません。

于 2013-07-20T19:04:47.227 に答える
1

以下の単純な を使用して同じことを達成しましたhack。各フォルダーにファイルを含める必要があり、そのファイルを確認できるため、そのファイルが存在する場合、フォルダーパスが有効であることを意味します。私の場合、取ったファイルはdonotdelete.txtgetObjectInfoだったので、s3 ビューアーはこのファイルを削除してはならないことを理解できます。関数を使用してこのファイルを確認してください。例えば:

    if($s3->getObjectInfo("bucketName","folder_name/donotdelete.txt")))
    { 
        //Do Whatever you want to do if folder exists
    }
    else
    {
        //Do whatever you want to do if folder doesn't exist
    }
于 2016-02-19T07:24:00.103 に答える