【发布时间】:2012-11-19 04:35:36
【问题描述】:
我正在使用 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/xxx/ 开头的文件中与用户123 相关的照片
我错过了什么?非常感谢。
【问题讨论】: