【问题标题】:PHP AWS S3 sdk: How to generate pre signed url to upload a file to a folder in the S3 bucket using PHP?PHP AWS S3 sdk:如何使用 PHP 生成预签名 url 以将文件上传到 S3 存储桶中的文件夹?
【发布时间】:2019-09-27 02:53:43
【问题描述】:

我正在尝试创建一个预签名的 url,以使用 PHP 将文件上传到 S3 存储桶中的文件夹。我能够生成要在存储桶中上传的 url,但不知道在哪里提到文件夹名称。下面是我的代码。

$object = 'test_103.jpg';
$bucket = $config['s3_input']['bucket'];
$expiry = new DateTime('+10 minutes');

$command = $s3_input->getCommand(
      'PutObject',
      [
          'Bucket' => $bucket,
          'Key' => $object
      ]
  );
$signedRequest = $s3_input->createPresignedRequest($command,'+10 minutes');
$signedUploadUrl = $signedRequest->getUri();

echo $signedUploadUrl;

在上面的代码中,我如何传递要在其中创建预签名 url 的文件夹名称?

【问题讨论】:

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


    【解决方案1】:

    S3 没有层次结构/目录结构,因此请记住这一点,当您以后想要“移动”或“重命名”S3 上的“文件夹”时,这一点变得很重要

    https://serverfault.com/questions/435827/what-is-the-difference-between-buckets-and-folders-in-amazon-s3

    直接回答您的问题:在“Key”中添加斜杠“/”以达到您想要的效果

    另外,来自文档

    $commands[] = $s3Client->getCommand('PutObject', array(
        'Bucket' => 'SOME_BUCKET',
        'Key'    => 'photos/photo01.jpg',
        'Body'   => fopen('/tmp/photo01.jpg', 'r'),
    ));
    

    【讨论】:

    • 用'/'添加文件夹名不起作用,当我使用上面代码生成的url时,文件只在文件名'0'的桶中创建,没有任何扩展名。
    • php sdk 中是否有类似于 js sdk 中的 presignedpost 的方法,而不是 PutObject 上的方法
    猜你喜欢
    • 2021-08-18
    • 2019-01-30
    • 2012-05-28
    • 1970-01-01
    • 2020-03-17
    • 2022-01-11
    • 2021-01-30
    • 2022-01-27
    • 2020-10-23
    相关资源
    最近更新 更多