【问题标题】:Delete a file from s3 bucket从 s3 存储桶中删除文件
【发布时间】:2018-05-16 07:06:26
【问题描述】:

我在 php-symfony2 中创建了上传和下载服务。这工作正常。现在我想删除上传的文件。有什么例子吗?

注意:没有数据存储到数据库表中。

【问题讨论】:

    标签: php symfony amazon-s3


    【解决方案1】:

    删除一个对象(非版本化存储桶)

    1. 使用 Aws\S3\S3Client 类 factory() 创建 S3 客户端实例

    $s3 = S3Client::factory();

    1. 使用存储桶名称和键名称执行 Aws\S3\S3Client::deleteObject() 方法。

      $result = $s3->deleteObject(array( '桶' => $桶, '键' => $keyname ));

    如果启用版本控制,将添加 DELETE MARKER。 (References)

    示例

    <?php
    
        require 'vendor/autoload.php';
        use Aws\S3\S3Client;
        $s3 = S3Client::factory();
        
        $bucket = '*** Your Bucket Name ***';
        $keyname = '*** Your Object Key ***';
        
        $result = $s3->deleteObject(array(
            'Bucket' => $bucket,
            'Key'    => $keyname
        ));
    

    更多参考可以在here找到。

    【讨论】:

    • 让我试试看。
    • 我们如何在不提供任何密钥和秘密的情况下删除对象?
    • @HiteshRanaut 哈哈。问这个问题就像如何在“没有”汽油的情况下驾驶汽车。
    • @AlwaysHelping 使用 CNG 或电力。 :D
    • 但是你是对的,我不记得我为什么要添加上面的评论。
    【解决方案2】:

    在我尝试了很多解决方案后,我找到了最适合我的解决方案。

    $s3 = Storage::disk('s3');
    $s3->delete('filename');
    

    【讨论】:

      【解决方案3】:

      你可以使用deleteObject()方法,参考doc

      use Aws\S3\S3Client;
      
      $s3 = S3Client::factory();
      
      $bucket = '*** Your Bucket Name ***';
      $keyname = '*** Your Object Key ***';
      
      $result = $s3->deleteObject(array(
          'Bucket' => $bucket,
          'Key'    => $keyname
      ));       
      

      【讨论】:

        【解决方案4】:

        您可以使用 aws s3 delete API 方法删除上传的文件。你可以像下面这样实现它。

        使用 Aws\S3\S3Client;

        $s3 = new S3(awsAccessKey, awsSecretKey);

        $s3->deleteObject("bucketname", filename);

        【讨论】:

          【解决方案5】:

          不幸的是,Arsalan 的回答似乎不再有效。使用访问和密钥对我有用的是:

              $this->s3 = new S3Client([
                'driver' => 's3',
                'version' => 'latest',
                'region'  => env('AWS_DEFAULT_REGION'),
                'credentials' => [
                  'key' => env('AWS_ACCESS_KEY_ID'), 
                  'secret' => env('AWS_SECRET_ACCESS_KEY')
                ]
              ]);
          
              $this->s3->putObject([
                'Bucket' => env('AWS_BUCKET'),  
                'Key'    => env('AWS_SECRET_ACCESS_KEY'),
                'Body'   => $body,
                'Key'    => $key
              ]);
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2012-04-20
            • 2015-06-23
            • 2017-02-01
            • 1970-01-01
            • 2011-03-09
            • 2012-05-16
            • 1970-01-01
            相关资源
            最近更新 更多