首页 文章

如何使用PHP将签名URL中的文件从Amazon S3下载到客户端计算机?

提问于
浏览
0

当用户点击网站上的链接时,我正在尝试通过php从带有签名URL的Amazon S3存储桶下载文件 . 这是我到目前为止所拥有的:

$client = S3Client::factory(
    array(
      'key' => 'xyz',
      'secret' => 'abc'
));

$signedUrl = $client->getObjectUrl(<bucket>, $location, '+10 minutes');

现在,如何使用上面签名的URL将文件下载到客户端计算机?

1 回答

  • 0

    假设您在获取 url 时遇到问题并且已正确实现api,这应该可行

    $client = S3Client::factory(
        array(
          'key' => 'xyz',
          'secret' => 'abc'
    ));
    
    $signedUrl = $client->getObjectUrl(<bucket>, $location, '+10 minutes');
    file_put_contents($fileName, file_get_contents($signedUrl));
    

    现在,这会将文件放在您的服务器上 . 为了下载到客户端,有几种方法 . 让我试试最简单的

    header('Content-Type: application/csv'); // Change mime type
    header('Content-Disposition: attachment; filename=temp.csv'); // Change filename
    header('Pragma: no-cache');
    echo (file_get_contents($signedUrl));
    

    这不是保存在服务器上,而是将输出提供给客户端 . 另一种方法是将URL发送到javascript并从客户端下载 .

相关问题