Php 下载私有对象AmazonS3API

Php 下载私有对象AmazonS3API,php,amazon-web-services,amazon-s3,Php,Amazon Web Services,Amazon S3,我正在使用AmazonS3PHP上传和下载文件 例如,要从amazon s3获取一个私有文件,我正在使用: // Cast the body to a primitive string $bodyAsString = (string) $object['Body']; 及 下载 但这对服务器来说非常沉重,有没有一种解决方案可以使用链接直接从amazon s3下载私有对象,有点像具有安全性的公共对象。您可以为具有过期日期的对象创建预签名URL。您可以使用此功能允许用户直接从AmazonS3下载私

我正在使用AmazonS3PHP上传和下载文件

例如,要从amazon s3获取一个私有文件,我正在使用:

// Cast the body to a primitive string
$bodyAsString = (string) $object['Body'];

下载


但这对服务器来说非常沉重,有没有一种解决方案可以使用链接直接从amazon s3下载私有对象,有点像具有安全性的公共对象。

您可以为具有过期日期的对象创建预签名URL。您可以使用此功能允许用户直接从AmazonS3下载私有对象。AWS SDK for PHP提供了一个简单的工具,可以帮助您实现这一点。

public function getResponse($content, $filename, $length, $contentType)
{
    $response = new Response();

    $response->headers->set('Content-Description','File Transfer');
    $response->headers->set('Content-Type',$contentType);
    $response->headers->set('Content-Disposition','attachment; filename='.basename($filename));
    $response->headers->set('Content-Transfer-Encoding','binary');
    $response->headers->set('Expires','0');
    $response->headers->set('Cache-Control','must-revalidate');
    $response->headers->set('Pragma','public');
    $response->headers->set('Content-Length',$length);

    $response->setContent($content);

    return $response;
}