OSS PHP SDK提供了丰富的文件下载接口,用户可以通过以下方式从OSS下载文件(object):
提示:
- 文件下载的完整代码请参见:GitHub
<?php
/**
* get_object_to_local_file
*
* 获取object
* 将object下载到指定的文件
*
* @param OssClient $ossClient OSSClient实例
* @param string $bucket 存储空间名称
* @return null
*/
function getObjectToLocalFile($ossClient, $bucket)
{
$object = "oss-php-sdk-test/download-test-object-name.txt";
$localfile = "download-test-object-name.txt";
$options = array(
OssClient::OSS_FILE_DOWNLOAD => $localfile,
);
try{
$ossClient->getObject($bucket, $object, $options);
} catch(OssException $e) {
printf(__FUNCTION__ . ": FAILED\n");
printf($e->getMessage() . "\n");
return;
}
print(__FUNCTION__ . ": OK, please check localfile: 'upload-test-object-name.txt'" . "\n");
}
<?php
/**
* 获取object的内容
*
* @param OssClient $ossClient OSSClient实例
* @param string $bucket 存储空间名称
* @return null
*/
function getObject($ossClient, $bucket)
{
$object = "oss-php-sdk-test/upload-test-object-name.txt";
try{
$content = $ossClient->getObject($bucket, $object);
} catch(OssException $e) {
printf(__FUNCTION__ . ": FAILED\n");
printf($e->getMessage() . "\n");
return;
}
print(__FUNCTION__ . ": OK" . "\n");
}
<?php
/**
* 获取object的内容
*
* @param OssClient $ossClient OSSClient实例
* @param string $bucket 存储空间名称
* @return null
*/
function getObject($ossClient, $bucket)
{
$object = "oss-php-sdk-test/upload-test-object-name.txt";
try{
$options = array(OssClient::OSS_RANGE => '0-100');
$content = $ossClient->getObject($bucket, $object, $options);
} catch(OssException $e) {
printf(__FUNCTION__ . ": FAILED\n");
printf($e->getMessage() . "\n");
return;
}
print(__FUNCTION__ . ": OK" . "\n");
}
提示:
- 范围下载的内容也可以下载的文件;
- 下载范围为闭区间[start, end], 包括两端的字节。
参数 | 说明 | PHP SDK对应值 |
If-Modified-Since | 如果指定的时间早于实际修改时间,则正常传送。否则返回错误。 | OssClient::OSS_IF_MODIFIED_SINCE |
If-Unmodified-Since | 如果传入参数中的时间等于或者晚于文件实际修改时间,则正常传输文件;否则返回错误。 | OssClient::OSS_IF_UNMODIFIED_SINCE |
If-Match | 如果传入期望的ETag和object的ETag匹配,则正常传输;否则返回错误。 | OssClient::OSS_IF_MATCH |
If-None-Match | 如果传入的ETag值和Object的ETag不匹配,则正常传输;否则返回错误。 | OssClient::OSS_IF_NONE_MATCH |
注意:
- 如果If-Modified-Since设定的时间不符合规范,直接返回文件,并返回200 OK;
- If-Modified-Since和If-Unmodified-Since可以同时存在,If-Match和If-None-Match也可以同时存在;
- 如果包含If-Unmodified-Since并且不符合或者包含If-Match并且不符合,返回412 precondition failed;
- 如果包含If-Modified-Since并且不符合或者包含If-None-Match并且不符合,返回304 Not Modified。
<?php
/**
* 如果文件在指定的时间之后修改过,则下载文件
*
* @param OssClient $ossClient OSSClient实例
* @param string $bucket 存储空间名称
* @return null
*/
function getObject($ossClient, $bucket)
{
$object = "oss-php-sdk-test/upload-test-object-name.txt";
try{
$options = array(
OssClient::OSS_HEADERS => array(
OssClient::OSS_IF_MODIFIED_SINCE => "Fri, 13 Nov 2015 14:47:53 GMT"),
);
$content = $ossClient->getObject($bucket, $object, $options);
} catch(OssException $e) {
printf(__FUNCTION__ . ": FAILED\n");
printf($e->getMessage() . "\n");
return;
}
print(__FUNCTION__ . ": OK" . "\n");
}
提示:
- 文件的ETag值可以通过OssClient::getObjectMeta获取;
- 条件下载的内容也可以下载的文件。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。