如何使用 Php AWS S3 API 创建动态键名

How Do I Create a Dynamic Keyname Using Php AWS S3 API

提问人:Dango 提问时间:2/7/2020 更新时间:2/8/2020 访问量:272

问:

一直在测试最新的 Php AWS S3 API,我不确定如何在用户上传新书时动态命名键名,原因是我需要能够检索 XYZ 客户上传的书。提前致谢!

 <?php
  require 'aws/aws-autoloader.php';

  use Aws\S3\S3Client;
  use Aws\S3\Exception\S3Exception;

  //AWS S3 SHITE BELOW 
  $bucket = 'acmebooks';
  //CREATE DYNAMIC KEYNAME??
  $keyname = 'RANDOM KEYNAME';
  $secret = 'FOOBAR1345';

  $credentials = new Aws\Credentials\Credentials($keyname, $secret);

  $s3 = new Aws\S3\S3Client([
  'version'     => 'latest',
  'region'      => 'us-east-2',
  'credentials' => $credentials
  ]);

  try {
  // Upload data.
   $result = $s3->putObject([
    'Bucket' => $bucket,
    'Key'    => $keyname,
    //Body'   => 'Hello, world!',
    'Body'   => 'https://booksrun.com/image-loader/350/https:__images-na.ssl-images-amazon.com_images_I_41sYJq3nAWL.jpg',
    'ACL'    => 'public-read'
]);

// Print the URL to the object.
echo $result['ObjectURL'] . PHP_EOL;
print_r($result['Body']);
} catch (S3Exception $e) {

    echo $e->getMessage() . PHP_EOL;

}
?>      
PHP 网络服务 API 亚马逊-S3

评论


答:

0赞 Dango 2/8/2020 #1

忽略并混淆了$keyname这是我唯一的 AWS S3“密钥”,用于放入 AWS S3 存储桶的“密钥名称”。

修复如下

<?php
 require 'aws/aws-autoloader.php';

 use Aws\S3\S3Client;
 use Aws\S3\Exception\S3Exception;

 //TEST FOR AWS S3
 $key_input = 'jaybookcover1';

 //AWS S3 SHITE BELOW 
 $bucket = 'acmebooks';
 //UNIQUE AWS S3 KEYNAME??
 $keyname = ' my unique AWS S3 key';
 $secret = 'FOOBAR1345';

 $credentials = new Aws\Credentials\Credentials($keyname, $secret);

 $s3 = new Aws\S3\S3Client([
 'version'     => 'latest',
 'region'      => 'us-east-2',
 'credentials' => $credentials
 ]);

 try {
 // Upload data.
 $result = $s3->putObject([
'Bucket' => $bucket,
'Key'    => $key_input,
//Body'   => 'Hello, world!',
'Body'   => 'https://booksrun.com/image-loader/350/https:__images-na.ssl-images-amazon.com_images_I_41sYJq3nAWL.jpg',
'ACL'    => 'public-read'
]);

// Print the URL to the object.
echo $result['ObjectURL'] . PHP_EOL;
print_r($result['Body']);
} catch (S3Exception $e) {

echo $e->getMessage() . PHP_EOL;

}
?>