如何通过 PHP SDK 在 Amazon S3 存储桶下创建文件夹?

Posted

技术标签:

【中文标题】如何通过 PHP SDK 在 Amazon S3 存储桶下创建文件夹?【英文标题】:How to create folder under Amazon S3 bucket through PHP SDK? 【发布时间】:2012-08-30 18:41:48 【问题描述】:

我正在开发一个 iPhone 应用程序以允许用户上传照片和分享。我想使用 S3 来存储上传的图像以及处理后的图像(例如,缩略图、缩小尺寸的图像)。我已经在我的 EC2 实例上安装了 AWS php SDK,我的问题是: 1)从iPhone应用上传的照片应该先去EC2目录,然后复制到S3存储桶,还是应该直接上传到S3? 2) 如何通过PHP SDK在S3 bucket下创建不同的文件夹,以及如何从文件夹中读取文件?

提前致谢!

【问题讨论】:

【参考方案1】:

是的,可以使用s3sdk创建新文件夹。

试试下面的代码

<?php

 /* abc is the folder name */

 $s3->putObject(array( 
                   'Bucket' => $bucket,
                   'Key'    => "abc/",
                   'Body'   => "",
                   'ACL'    => 'public-read'
                  ));

【讨论】:

【参考方案2】:

    可以在这里找到答案: Direct upload to s3 without the use of a production server

    我从未使用过 PHP SDK,但我正在浏览 AWS SDK for PHP 1.5.14 documentation 并遇到了您需要使用的以下 API:

    a) create_object :您将使用它来将对象放入存储桶中。您将指定文件名。您询问如何创建不同的文件夹:您将在文件名中包含完整路径。例如,不要将文件命名为“photo1.jpg”,而是将其命名为“user1/vacation/photo1.jpg”。

    b) get_object_list :此 API 将返回给您一个给定条件的对象列表。如果要读取特定文件夹中的所有对象,请将前缀指定为文件夹的路径。例如,如果我想查找文件夹“user1/vacation/”中的所有文件,我会将前缀指定为“user1/vacation/”。

【讨论】:

以上是关于如何通过 PHP SDK 在 Amazon S3 存储桶下创建文件夹?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Amazon S3 SDK 更新元数据

Amazon S3 设置元数据使用 AWS SDK PHP v2 upload() 失败

amazon s3 iphone sdk 下载图片

使用 AWS SDK for PHP 上传的 Amazon S3 文件总是“application/octet-stream”?

如何使用 amazon sdk 为虚域生成预签名的 Amazon S3 url?

如何在不使用 SDK 的情况下将文件从 Android 上传到 Amazon S3