gpt4 book ai didi

php - 如果给定一个不存在的键,S3Client->GetObject() 永远不会返回或抛出异常

转载 作者:行者123 更新时间:2023-12-05 05:22:04 26 4
gpt4 key购买 nike

AWS S3Client->getObject() 如果我请求一个不存在的 key ,它永远不会返回也不会抛出异常。我怀疑其他 S3Client 方法在给定不存在的 key 时也会遇到同样的问题。

但是,如果我用 'debug' => true 配置 S3Client,它会在找不到文件时抛出 Aws\S3\Exception\S3Exception,这是可以接受的。

这是我写的一个测试用例:

protected function _test_s3_client_get($unit, $key) {
$provider = CredentialProvider::ini(NULL, APPPATH . 'config/aws.ini');
$provider = CredentialProvider::memoize($provider);
$client = new S3Client([
'region' => 'us-east-1',
'version' => '2006-03-01',
'credentials' => $provider,
// 'debug' => ['logfn' => [$this, '_noop']]
// 'debug' => true,
]);
try {
$result = $client->getObject(array(
'Bucket' => 'mybucket',
'Key'=> $key,
));
} catch (S3Exception $e) {
error_log($e);
}
$unit->run(isset($result['Body']), true, "Got $key");
}

如果 'debug' => true,无论是否找到文件,S3Client 都会在响应中转储大量数据。作为解决方法,我可以设置 debug 选项以使用调试输出调用空函数。尽管如此,这看起来并不是一个永久的解决方案。

有没有人遇到过这个问题?有更好的解决方法吗?

最佳答案

您可以在进行任何操作之前使用此函数检查 key (文件名)是否存在。

$doesFileExist = $client->doesObjectExist($bucket, $key);

判断对错

关于php - 如果给定一个不存在的键,S3Client->GetObject() 永远不会返回或抛出异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41511656/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com