如何从Amazon AWS S3 Version获取文件大小?

时间:2016-01-14 17:18:34

标签: php amazon-web-services amazon-s3

我被迫使用AWS S3的第2版,因为我无法在此服务器上将PHP更新为5.5以便使用版本3.

我制作了这个PHP脚本来从AWS下载文件,效果很好:

//http://docs.aws.amazon.com/aws-sdk-php/v2/api/class-Aws.S3.S3Client.html#_createPresignedUrl
// Get a command object from the client and pass in any options
// available in the GetObject command (e.g. ResponseContentDisposition)
$command = $s3Client->getCommand('GetObject', array(
    'Bucket' => $bucket,
    'Key' => $objectKey,
    'ResponseContentDisposition' => 'attachment; filename="' . $originFilename . '"'
));

// Create a signed URL from the command object that will last for
// 10 minutes from the current time
$signedUrl = $command->createPresignedUrl('+1000 minutes');

$file = file_get_contents($signedUrl);

问题是我想确保file_get_contents()下载整个文件并检测并修复任何错误(例如服务器在下载过程中脱机等等),所以我认为以下流速:

  1. 我向AWS询问文件大小
  2. 我下载文件
  3. 我检查尺寸。如果它不相等,我会重新下载文件
  4. 那么,如何从AWS获取文件大小?我找到了this,但它对我的版本没有用。

1 个答案:

答案 0 :(得分:3)

您可以使用HEAD Object REST API来确定存储在S3上的对象的大小。

HEAD Object将在Content-Length标题内返回与存储的S3对象关联的元数据,包括对象磁盘上的大小。

http://docs.aws.amazon.com/aws-sdk-php/v2/api/class-Aws.S3.S3Client.html#_headObject