【问题标题】:deleting files from s3 using laravel 5.6使用 laravel 5.6 从 s3 删除文件
【发布时间】:2020-07-21 00:41:16
【问题描述】:

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

我有以下代码

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

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

当我从本地设置运行它时,我必须暂时为每个人写入存储桶的对象权限。

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

对此的任何建议都会非常有帮助。

【问题讨论】:

  • 使用您从 S3 获得的响应对象编辑问题。有关于发生的事情的消息。
  • @Dhaval Chheda 可能缺少存储桶中的删除权限,否则您的路径不正确但您的代码是正确的
  • @Tpojka 没有消息它只是不删除
  • 您应该总是得到一些响应,无论是否有错误或成功的操作。试试这个 package 或在 try catch 块中设置最后一行。
  • 这是最适合我的解决方案Delete file from s3 bucket in laravel

标签: php laravel amazon-s3


【解决方案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 中的操作中选择 Make Public 选项。

【讨论】:

    【解决方案2】:

    我已经完成了下面的代码。

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

    【讨论】:

      【解决方案3】:

      您是否尝试使用 aws s3 cli 命令删除存储桶中的文件并查看它是否有效?

      例如:aws s3 rm s3://bucket-name/ --recursive

      如果它有效,那么您可能需要修复代码中的问题。

      【讨论】:

      • 直接可以工作..所以代码中有一些东西,但不知道是什么以及如何修复它
      猜你喜欢
      • 2013-11-16
      • 1970-01-01
      • 2016-01-06
      • 2016-12-25
      • 2014-05-31
      • 1970-01-01
      • 1970-01-01
      • 2018-10-17
      • 1970-01-01
      相关资源
      最近更新 更多