我想以编程方式从存储桶中删除文件,但没有发生
我有以下代码
$s3 = \Storage::disk('s3');
$existingImagePath = $studentPortfolios[$i]->portfolio_link; // this returns the path of the file stored in the db
$s3->delete($existingImagePath);
但这并不是从存储桶中删除文件
从本地设置运行该对象时,我暂时必须向所有人写入对象权限。
请注意:-我可以上传文件,但无法删除
任何有关此的建议都会很有帮助。
答案 0 :(得分:1)
就像从磁盘上删除文件一样。选中laravel文档:https://laravel.com/docs/5.6/filesystem#deleting-files
$imageName = $studentPortfolios[$i]->portfolio_link; // this returns the file name stored in the DB
\Storage::disk('s3')->delete('s3_folder_path/'. $imageName);
确保文件具有删除权限。如果没有通过选择文件或目录来授予s3的许可,然后从s3的操作中选择“公开”选项。
答案 1 :(得分:0)
您是否尝试使用aws s3 cli命令删除存储桶中的文件,并查看其是否有效?
例如:aws s3 rm s3:// bucket-name / --recursive
如果可以,那么您可能需要在代码中修复该问题。
答案 2 :(得分:0)
我已经完成了下面的代码。
use Aws\S3\S3Client;
use Aws\S3\Exception\S3Exception;
$bucket = "bucket";
$keyname = "keyname";
$s3 = new S3Client([
'version' => 'latest',
'region' => 'region'
]);
$result = $s3->deleteObject(array(
'Bucket' => $bucket,
'Key' => $keyname
));