从AWS s3存储桶中删除单个文件?

时间:2019-10-16 02:32:30

标签: php amazon-web-services amazon-s3

我正在尝试从AWS s3存储桶中删除单个文件,我的代码如下:

try {
//$client->deleteObject($bucket, $file1_cloud);
$result = $client->deleteObject(['Bucket' => 'my-bucket','Key' => 'myFile.png']);
} catch(\Aws\S3\Exception\S3Exception $e) {
echo "error"+$e;
}

任何人都可以告诉我我在做错什么,因为代码没有删除文件。

我尝试了以下代码,但是没有用:

UPDATE [dbo].[myTable] SET [column_indicator] = 1  
FROM  
(  
    SELECT a.[column_A],a.[column_indicator], COUNT(*) AS COUNT 
    FROM (select [dbo].[myTable].[column_A],[dbo].[myTable].[column_indicator]
      from [dbo].[myTable]) a
    GROUP BY a.[column_A],a.[column_indicator]
    having COUNT > 1
) t  
WHERE [dbo].[myTable].[column_A] = t.[column_A]; 

谢谢

2 个答案:

答案 0 :(得分:2)

该对象未被删除,因为您已要求S3删除不存在的对象,并且S3将其视为无操作而不是错误。这是因为您指定的是URL,而不是对象的键。

S3对象密钥的示例是:

testing/cats/fluffykins.png

请注意,它不是URL,也不以正斜杠开头。

调用PHP deleteObject函数的正确方法的示例是:

$result = $s3Client->deleteObject([
    'Bucket' => $bucket,
    'Key' => $key,
]);

请注意,它需要一个参数数组,包括bucket和key。假定使用PHP 5.4或更高版本,您可以在其中使用短数组语法,该语法将array()替换为[]

答案 1 :(得分:-1)

我已经通过使用以下代码解决了该问题:

    $client = S3Client::factory(array(
      'key' => "mykey",
      'secret'  => "my secret key"
   ));
//File reference on cloud.....
$file1_cloud = "TestFile/myFile.png";

$result = $client->deleteObject(array(
    'Bucket' => $bucket,
    'Key' => 'TestFile/myFile.png'));