我是 AWS S3 Service 的新手,正在从事像 Dropbox 这样的项目。现在我想使用 PHP 将所有图像存储在 S3 中,目前,我正在使用 S3 预签名 URL 来放置图像。现在我想向用户显示图像。我找到了 2 种方法:
- 授予公众对 S3 存储桶的访问权限(我不想这样做(。
- GET 对象的预签名 URL。(但用户可以查看目录结构(
我想要类似永久 URL 的东西来查看图像,但不显示图像在 S3 存储桶中的路径。例如,当前URL的结构如下:
domain.com///?
但我想要这样的东西:
domain.com/某些代码就像一个指针,用于从 s3 存储桶的目录中获取图像。请给我一个提示。
提前致谢
您可以使用此脚本作为代理,使用 php curl 从 S3 获取图像。
$bucket = 'bucketname';
$filename = 'somefile.jpg';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://s3-<region>.amazonaws.com/' . $bucket . '/' . $filename);
curl_setopt($ch, CURLOPT_AUTOREFERER, TRUE);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, TRUE);
$data = curl_exec($ch);
curl_close($ch);
header("Content-Length: " . strlen($data));
echo $data;
例如,与 .htaccess RewriteRule
结合使用,您的 s3 存储桶 URL 将被隐藏,可以简单地获取资源,例如此 URL http://example.com/resources/images/somefile.jpg
RewriteRule ^resources/images/([^/]+)$ /proxy.php?filename=$1 [QSA,L]