我正在尝试通过listObjects获取AWS S3中的对象,但是我需要使用预签名的url来实现。 以下代码为我提供了这些对象:
$objects = $s3Client->listObjects([
'Bucket' => $bucket,
'Prefix' => $prefix
]);
问题是我需要使用预签名的url。我得到以下URL:
$cmd = $s3Client->getCommand('ListObjects', [
'Bucket' => $bucket,
'Prefix' => $prefix
]);
$request = $s3Client->createPresignedRequest($cmd, '+20 minutes');
$url = (string)$request->getUri();
当我通过浏览器访问URL时,我检索了对象,但是我需要用PHP获取对象,而不是指向它们的链接。我该怎么办?
答案 0 :(得分:-1)
$s3Client = Aws::createClient('s3');
$result = $s3Client->getObject(array(
'Bucket' => $bucket,
'Key' => $path
));
$metadata = $result->get("@metadata");
$statusCode = $metadata["statusCode"];
if ($statusCode == 200) {
header("Content-type: text/image");
header("Content-Disposition: attachment; filename=".$path);
header("Pragma: no-cache");
header("Expires: 0");
return $result['Body'];//echo $result['Body'];
}