ホームページ >バックエンド開発 >Golang >AWS S3 ListObjectsV2 はオブジェクトとして「フォルダー」を返します

AWS S3 ListObjectsV2 はオブジェクトとして「フォルダー」を返します

WBOY
WBOY転載
2024-02-08 20:53:49729ブラウズ

AWS S3 ListObjectsV2 返回“文件夹”作为对象

質問の内容

s3バケットの特定のディレクトリにあるすべてのファイルを一覧表示しようとしています(s3には実際にはディレクトリがないことはわかっています) 。)。

構造は次のとおりです:

バケット名: フォルダー1/フォルダー2/フォルダー3/ファイル

つまり、s3 の世界では、これは上記の名前のファイルを保存するだけだと思います。

これは私のコードです:

リーリー

resp には、私が期待するファイルと、それが保存されている「ディレクトリ」が含まれています:

リーリー

私も試してみました:

リーリー

しかし、結果は同じです。

これはパラメータの結果です:

params := &s3.listobjectsv2input{
        bucket: aws.string(os.getenv("s3_user_bucket")),
        prefix: aws.string(key + loc[0] + "/"),
    }

    resp, _ := svc.listobjectsv2(params)

正解


オブジェクトとしてディレクトリが返される理由を尋ねていると思います。

そのとおりです。amazon s3 はディレクトリ を使用しません。代わりに、オブジェクトのファイル名 (key) は、ファイル名を含む フル パス です。特定のパスにオブジェクトを作成する前にディレクトリを作成する必要はありません。

ただし、誰かが s3 管理コンソールの Create Folder ボタンをクリックすると、ディレクトリの名前を持つ 長さゼロのオブジェクトが作成されます。これにより、ディレクトリが「強制的に」表示されます (ディレクトリ内にオブジェクトがあるため) が、実際には長さ 0 のオブジェクトです。

出品結果を表示:

リーリー

size: 0 と表示されていることがわかります。つまり、これは長さ 0 のオブジェクトです。

これらの種類のファイルをリストから除外したい場合は、コード内の長さ 0 のオブジェクトをスキップしてください。

以上がAWS S3 ListObjectsV2 はオブジェクトとして「フォルダー」を返しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はstackoverflow.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。