2015-07-20 1 views
0

Я не смог создать назначенный Url, используя AWS SDK для PHP. Мой код -Звонок на неопределенный метод createPresignedUrl() с использованием AWS SDK для PHP

function connect() 
    { 
    // Instantiate the S3 class and point it at the desired host 
    date_default_timezone_set('GMT'); 
    return S3Client::factory(array(
    'region' => 'us-west-2', 
    'version' => 'latest', 
    'credentials' => [ 
      'key' => $key, 
      'secret' => $secret 
     ] 

    )); 

function getSignedS3URLForObject($fileName) 
     { 
      // GET CURRENT DATE 
      $milliseconds = round(microtime(true) * 1000); 
      $expiration = $milliseconds + (1000 * 60 * 60 * 24 * 30 * 2); 
      $s3 = self::connect(); 
      $command = $s3->getCommand('GetObject', array(
       'Bucket'  => self::$customerBucket, 
       'Key'   => $fileName, 
       'ContentType' => 'image/jpeg', 
       'Body'  => '', 
       'ContentMD5' => false 
      )); 
      $signedUrl = $command->createPresignedUrl($expiration); 
      echo urldecode($signedUrl); 
      return $signedUrl; 
     } 

Это дает мне следующий error-

Fatal error: Call to undefined method Aws\Command::createPresignedUrl() in /Users/waverley_lv/WaverleySoftware/workspace/fox.php.auto/sites/default/behat-tests/util/S3Utility.php on line 103

+0

Do 'var_dump ($ s3);' после вызова '$ s3 = self :: connect();'. Возможно, вы не сможете вернуть объект, который вы ожидаете. – nickb

+0

Какую версию AWS SDK вы используете? –

+0

Я использую AWS SDK S3 - Release v2.1.39 –

ответ

1

Использование s3.0.0 v3 - я сделал следующее, чтобы получить эту работу.

$command = $s3->getCommand('GetObject', array(
      'Bucket'  => $this->customerBucket, 
      'Key'   => $fileName, 
      'ContentType' => 'image/png', 
      'ResponseContentDisposition' => 'attachment; filename="'.$fileName.'"' 
     )); 
$signedUrl = $s3->createPresignedRequest($command, "+1 week"); 
+0

спасибо, это помогает мне) –

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

  • Нет связанных вопросов^_^