2016-01-14 2 views
4

я вынужден использовать версию 2 AWS S3, потому что я не могу обновить PHP до 5.5 на этом сервере, чтобы использовать версии 3.Как получить размер файла от Amazon AWS S3 Version 2?

Я сделал это 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. Я проверяю размер. Если это не равно i, перезагрузите файл

Итак, как получить размер файла от AWS? Я нашел this, но он не работает для моей версии.

ответ

3

Для определения размера объекта, хранящегося на S3, вы можете использовать API REST HEAD Object.

HEAD Object возвращает метаданные, связанные с сохраненным объектом S3, включая размер на диске объекта, в заголовке Content-Length.

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

Смежные вопросы