php - Laravel 保护 Amazon s3 存储桶文件

标签 php laravel laravel-5 amazon-s3 laravel-4

我正在使用 Amazon s3,但我面临两个问题

1.当我提交表单时,我无法直接将文件上传到亚马逊服务器。我的意思是我必须将图像上传到我的 PHP 服务器上的 upload 文件夹,然后我必须从那里检索和将它们上传到 s3 服务器。有没有办法在我们点击提交的时候直接上传图片到s3

2.如果我在s3 put object 中传递'public',那么我就可以访问或查看文件,但如果我将其公开,则每个人都可以查看文件。但我需要保护所有文件并仅供经过身份验证的用户查看。谁能建议我如何解决这个问题?

try {           
    $s3 = \Storage::disk('s3');
    $s3->put($strFileName, file_get_contents($img_path.$strFileName), 'public');
} catch (Aws\Exception\S3Exception $e) {
    echo "There was an error uploading the file.\n"+$e;
}

在提问之前,我已经阅读了很多来自 stackoverflow 的答案,但它并没有帮助我解决我的问题。谢谢。

最佳答案

第一个问题,可以直接上传图片到AWS S3。

$s3 = \Storage::disk('s3')->getDriver();
$s3->put($filePath, file_get_contents($file), array('ContentDisposition' => 'attachment; filename=' . $file_name . '', 'ACL' => 'public-read'));

您应该指定文件路径和从表单中获取的文件。

关于php - Laravel 保护 Amazon s3 存储桶文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40168221/

相关文章:

php - $结果 = mysql_query()

php - 谷歌 API : 404 Domain not found

php - 在其他 Blade 中包含导航栏 Blade 会使 "CSS"与 "Laravel"发生冲突!

php - Laravel 日志最大文件不起作用

php - 尝试在 API 调用上使用 {} catch {} 或进行不同的处理?

php - Magento PayPal TLS v1.2 是 cURL 7.29.0 可以还是需要 7.34.0?

php - MYSQL:每组最大的问题

php - 如何在 Laravel 5.4.18 中使用特征?

laravel - 如何从在 Cloud Run 上运行的 Laravel 项目连接到 Cloud SQL?

php - Laravel S3 图片上传会自动创建一个文件名的文件夹