下载对象
您可以使用 getObject 接口下载对象,以下代码展示如何下载一个对象:
$bucket = '<your-bucket-name>';
$keyname = '<your-object-key>';
$file_Path = '<your-file-path>';
try {
// 保存对象到指定路径
$result = $s3Client->getObject(array(
'Bucket' => $bucket,
'Key' => $keyname,
'SaveAs' => $file_Path,
));
} catch (S3Exception $e) {
echo $e->getMessage() . "\n";
}
下载文件时,可以指定一个或者多个限定条件,满足条件时才下载对象,不满足时则返回错误代码,不下载对象。可以使用的限定条件如下:
限定条件 | 作用 |
---|---|
IfModifiedSince | 如果指定的时间早于实际修改时间,则正常传送。否则返回304代码。 |
IfUnmodifiedSince | 如果传入参数中的时间等于或者晚于文件实际修改时间,则正常传输文件;否则返回304代码。 |
IfMatch | 如果传入的ETag和Object的 ETag匹配,则正常传输;否则返回412代码。 |
IfNoneMatch | 如果传入的ETag值和Object的ETag不匹配,则正常传输;否则返回412代码。 |
以下示例代码展示如何指定限定条件下载对象:
$bucket = '<your-bucket-name>';
$keyname = '<your-object-key>';
$file_Path = '<your-file-path>';
try {
$dateTime = new DateTime('<your-datetime>');
echo $dateTime->format('c') . "\n";
$result = $s3Client->getObject(array(
'Bucket' => $bucket,
'Key' => $keyname,
'SaveAs' => $keyname,
'IfModifiedSince' => $dateTime, //指定晚于修改时间
'IfMatch' => '<your-ETag>', //指定匹配的ETag
));
var_dump($result);
} catch (S3Exception $e) {
echo $e->getMessage() . "\n";
}