我正在使用 Amazon S3 存储用户上传的照片,使用以下代码:
if(isset($_POST['Submit'])){
$fileName = $_FILES['theFile']['name'];
$fileTempName = $_FILES['theFile']['tmp_name'];
$folderName = "{id}/{address}/$fileName";
//create a new bucket
$s3->putBucket("bucket_name", S3::ACL_PUBLIC_READ);
//move the file
if ($s3->putObjectFile($fileTempName, "bucket_name", $folderName, S3::ACL_PUBLIC_READ)) {
echo ""; //etc, etc
{id}
和是动态变量,{address}
用于在上传文件时根据存储在 mysql 数据库中的每个用户的唯一数据创建文件夹的外观。
我遇到的问题是在每个用户的密码保护站点中显示这些文件。我在下面使用的代码拍摄了所有用户的照片并将它们显示给所有用户。如果{id}/{address}/$fileName
转换为,123/figuero/photo.jpg
则用户123
应该只能看到123/figuero/photo.jpg
(或任何其他带有前言123/
或123/xxx/
使用我在下面使用的代码,bucket_name
所有用户都可以看到里面的所有文件,而不仅仅是与照片相关的动态数据相关联的文件:
<ul>
<?php
$i = 0;
$contents = $s3->getBucket("bucket_name");
foreach($contents as $file)
{
$fname = $file['name'];
$furl = 'http://bucket_name.s3.amazonaws.com/'.$fname;
echo "<li><img src='$furl'></li>";
{
$i = 0;
}
}
?>
<ul>
换句话说,http://bucket_name.S3.amazonaws.com/中的所有文件都被代码拉出以供显示,而不仅仅是文件中与用户有关的照片123
123/xxx/
我错过了什么?提前非常感谢。