使用laravel 5.6从s3删除文件

时间:2018-10-06 09:10:17

标签: php laravel amazon-s3

我想以编程方式从存储桶中删除文件,但没有发生

我有以下代码

$s3 = \Storage::disk('s3');
$existingImagePath = $studentPortfolios[$i]->portfolio_link; // this returns the path of the file stored in the db
$s3->delete($existingImagePath);

但这并不是从存储桶中删除文件

从本地设置运行该对象时,我暂时必须向所有人写入对象权限。

请注意:-我可以上传文件,但无法删除

任何有关此的建议都会很有帮助。

3 个答案:

答案 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
    ));