此处的PHP / AWS S3新手:正在从事一个项目,在该项目中,我需要能够显示AWS S3存储桶中的专辑插图以及播放音乐文件。我可以上传,但是当尝试查看图像时,它会下载。检查了内容类型和内容配置。我相信问题在于以下代码段:任何帮助/建议,我将不胜感激。
<?php
....
....
try {
$s3 = S3Client::factory(
array(
'credentials' => array(
'key' => $IAM_KEY,
'secret' => $IAM_SECRET
),
'version' => 'latest',
'region' => 'us-east-2'
)
);
//
$result = $s3->getObject(array(
'Bucket' => $BUCKET_NAME,
'Key' => $keyPath
));
echo $result;
//exit();
// Display it in the browser
header("Content-Type: {$result['ContentType']}");
header('Content-Disposition: filename="' . basename($keyPath) . '"');
return $result['Body'];
} catch (Exception $e) {
die("Error: " . $e->getMessage());
}
?>
<!DOCTYPE html>
<html>
<head>
<title>display image</title>
</head>
<body>
<img src="<?php echo $result['body']; ?>">
</body>
</html>
答案 0 :(得分:0)
在this answer中被引用/被盗:
您可以从S3下载内容(使用PHP脚本),然后使用正确的标题提供内容。
作为一个粗略的例子,假设您在image.php中具有以下内容:
$s3 = new AmazonS3();
$response = $s3->get_object($bucket, $image_name);
if (!$response->isOK()) {
throw new Exception('Error downloading file from S3');
}
header("Content-Type: image/jpeg");
header("Content-Length: " . strlen($response->body));
die($response->body);
Then in your HTML code, you can do
<img src="image.php">