本文介绍如何使用限定条件下载OSS文件。
下载文件时,可以指定一个或多个限定条件。满足限定条件则下载,条件不满足则返回错误且不会触发下载行为。可用的限定条件如下:
参数 | 描述 | 如何设置 |
---|---|---|
If-Modified-Since | 如果指定的时间早于实际修改时间,则正常传输文件,否则返回错误(304 Not modified)。 | OssClient::OSS_IF_MODIFIED_SINCE |
If-Unmodified-Since | 如果指定的时间等于或者晚于文件实际修改时间,则正常传输文件,否则返回错误(412 Precondition failed)。 | OssClient::OSS_IF_UNMODIFIED_SINCE |
If-Match | 如果指定的ETag和OSS文件的ETag匹配,则正常传输文件,否则返回错误(412 Precondition failed)。 | OssClient::OSS_IF_MATCH |
If-None-Match | 如果指定的ETag和OSS文件的ETag不匹配,则正常传输文件,否则返回错误(304 Not modified)。 | OssClient::OSS_IF_NONE_MATCH |
说明
- If-Modified-Since和If-Unmodified-Since可以同时存在。If-Match和If-None-Match也可以同时存在。
- ETag可以通过$ossClient->getObjectMeta方法获取。
条件下载既可以下载OSS文件到本地内存,也可以下载到本地文件。以下代码用于限定条件下载:
<?php
if (is_file(__DIR__ . '/../autoload.php')) {
require_once __DIR__ . '/../autoload.php';
}
if (is_file(__DIR__ . '/../vendor/autoload.php')) {
require_once __DIR__ . '/../vendor/autoload.php';
}
use OSS\OssClient;
// 阿里云主账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM账号进行API访问或日常运维,请登录 https://ram.console.aliyun.com 创建RAM账号。
$accessKeyId = "<yourAccessKeyId>";
$accessKeySecret = "<yourAccessKeySecret>";
// Endpoint以杭州为例,其它Region请按实际情况填写。
$endpoint = "http://oss-cn-hangzhou.aliyuncs.com";
$bucket= "<yourBucketName>";
$object = "<yourObjectName>";
try{
$options = array(
OssClient::OSS_HEADERS => array(
OssClient::OSS_IF_MODIFIED_SINCE => "Fri, 13 Nov 2015 14:47:53 GMT"),
);
$ossClient = new OssClient($accessKeyId, $accessKeySecret, $endpoint);
$content = $ossClient->getObject($bucket, $object, $options);
} catch(OssException $e) {
printf(__FUNCTION__ . ": FAILED\n");
printf($e->getMessage() . "\n");
return;
}
print ($content);
print(__FUNCTION__ . ": OK" . "\n");
在文档使用中是否遇到以下问题
更多建议
匿名提交