【问题标题】:AWS S3 php api : How to get url after file upload?AWS S3 php api:文件上传后如何获取url?
【发布时间】:2013-08-29 19:44:46
【问题描述】:

我使用了 aws sdk (https://github.com/aws/aws-sdk-php)。

代码

$result = $client->putObject(array(
        'Bucket' => $bucket,
        'Key'    => $key,
        'Body'   => $file,
        'ACL'    => 'public-read',
));

效果很好,但我有一个问题:

  1. 文件上传成功后如何获取url。

谢谢。

【问题讨论】:

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


【解决方案1】:

在响应中返回。请参阅API docs for putObject

$result = $client->putObject(array(
    'Bucket' => $bucket,
    'Key'    => $key,
    'Body'   => $file,
    'ACL'    => 'public-read',
));

$url = $result['ObjectURL'];

您也可以使用getObjectUrl()方法获取网址。

$url = $client->getObjectUrl($bucket, $key);

【讨论】:

    【解决方案2】:

    返回的结果是 Guzzle\Service\Resource\Model 的一个实例。

    要获取 url,只需使用该类提供的 get 方法。

    $result = $client->putObject(array(
        'Bucket' => $bucket,
        'Key'    => $key,
        'Body'   => $file,
        'ACL'    => 'public-read',
    ));
    
    $url = $result->get('ObjectURL');
    

    【讨论】:

    • 这更优雅,虽然我们需要正确获取的关键是'ObjectURL',以使其工作。
    【解决方案3】:

    对象 URL 在函数调用中返回的 $result 变量中可用。

    要访问对象 URL,请执行以下操作:

    $result = $client->putObject(array(
        'Bucket' => $bucket,
        'Key'    => $key,
        'Body'   => $file,
        'ACL'    => 'public-read',
    ));
    $data=$result->toArray();
    $object_url=$data['ObjectURL'];
    

    【讨论】:

    • 我无法使用 Malcolm Diggs 解决方案,不确定 API 是否已经更改:)
    • 现在使用 $result->get('ObjectURL')。
    猜你喜欢
    • 2014-02-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-08
    • 2015-08-26
    • 2018-05-07
    • 2012-06-14
    相关资源
    最近更新 更多