我正在使用 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/