动态获取Amazon S3存储桶中的文件大小

Dod*_*nas 5 php mysql amazon amazon-s3 amazon-web-services

我之前看过"如何找到整个S3存储桶大小"的问题.这是一个不同的问题 - 所以如果它含糊不清,我会事先道歉.我会尽力解释我想要实现的目标.

我目前正在使用Amazon S3 PHP Class.

这就是我想要实现的目标:

  1. 我希望能够遍历我的MySQL数据库并在我的S3服务器上获取文件的特定文件名.(这可能基于用户).

  2. 在循环期间,查询Amazon S3存储桶(以某种方式)并获取MySQL循环中每个文件的文件大小.

  3. 添加所有文件大小,以获得一个大致的字节大小.

所以,基本上,假设我的用户在S3存储桶上有5个文件.我怎样才能查询S3存储桶,查看该用户的5个文件存储在存储桶中的数据量?

如果难以理解,我道歉.如果需要,我可以重新表达清楚.

任何朝着正确方向的推动都将非常感激.

小智 12

你真的应该将文件大小存储在你的Mysql表中.更快获得信息,减少S3成本.

但是......试试这个?

$info = $s3->getObjectInfo($bucketName, $filename);
print $info['size'];
Run Code Online (Sandbox Code Playgroud)

  • Upvote为"你真的应该将文件大小存储在你的Mysql表中" (3认同)

小智 7

现在AWS已经发布了支持PHP SDK,您可能需要考虑切换到使用它:http://aws.amazon.com/sdkforphp/.

它还包括用于获取对象大小的api:get_object_filesize().

我同意John Ventimiglia的观点.每次拨打S3都需要时间并且需要花钱.如果您可以在本地存储信息,它将提供更好的客户体验(更快)并且更便宜.


ele*_*oid 5

2015年我必须使用http://docs.aws.amazon.com/aws-sdk-php/v2/guide/feature-s3-stream-wrapper.html

$client->registerStreamWrapper();
Run Code Online (Sandbox Code Playgroud)

进而

$size = filesize('s3://' . $bucket . '/' . $key);
Run Code Online (Sandbox Code Playgroud)

我希望这会对某人有所帮助。