查看已上传的分片
查看上传的分片可以罗列出指定Upload ID所属的所有已经上传成功的分片。
通过下面代码,可以查看一次上传任务已上传的分片:
/**
* 查看已上传的分片
*
* @param OssClient $ossClient OSSClient实例
* @param string $bucket 存储空间名称
* @param string $uploadId upload Id
* @return null
*/
function putObject($ossClient, $bucket, $uploadId)
{
$object = "oss-php-sdk-test/upload-test-object-name.txt";
try{
$listPartsInfo = $ossClient->listParts($bucket, $object, $upload_id);
foreach ($listPartsInfo->getListPart() as $partInfo) {
print($partInfo->getPartNumber() . "\t" . $partInfo->getSize() . "\t" . $partInfo->getETag() . "\t" . $partInfo->getLastModified() . "\n");
}
} catch(OssException $e) {
printf(__FUNCTION__ . ": FAILED\n");
printf($e->getMessage() . "\n");
return;
}
print(__FUNCTION__ . ": OK" . "\n");
}
查看当前正在进行的分片上传任务
通过下面代码,可以得到当前正在进行中,还未完成的分片上传:
<?php
/**
* 获取当前未完成的分片上传列表
*
* @param $ossClient OssClient
* @param $bucket string
*/
function listMultipartUploads($ossClient, $bucket) {
$options = array(
'delimiter' => '/',
'max-uploads' => 100,
'key-marker' => '',
'prefix' => '',
'upload-id-marker' => ''
);
try {
$listMultipartUploadInfo = $ossClient->listMultipartUploads($bucket, $options);
} catch(OssException $e) {
printf(__FUNCTION__ . ": listMultipartUploads FAILED\n");
printf($e->getMessage() . "\n");
return;
}
printf(__FUNCTION__ . ": listMultipartUploads OK\n");
$listUploadInfo = $listMultipartUploadInfo->getUploads();
var_dump($listUploadInfo);
}
上述例子中提到的$options参数说明:
key | 说明 |
delimiter | 是一个用于对Object名字进行分组的字符。所有名字包含指定的前缀且第一次出现delimiter字符之间的object作为一组元素——CommonPrefixes。 |
key-marker | 与upload-id-marker参数一同使用来指定返回结果的起始位置。 |
max-uploads | 限定此次返回Multipart Uploads事件的最大数目,如果不设定,默认为1000,max-uploads取值不能大于1000。 |
prefix | 限定返回的object key必须以prefix作为前缀。注意使用prefix查询时,返回的key中仍会包含prefix。 |
upload-id-marker | 与key-marker参数一同使用来指定返回结果的起始位置。 |
名称 | 描述 | 默认值 |
Content-MD5 | 文件数据校验,设置了该值后OSS会启用文件内容MD5校验,把您提供的MD5与文件的MD5比较,不一致会抛出错误 | 无 |
Content-Type | 文件的MIME,定义文件的类型及网页编码,决定浏览器将以什么形式、什么编码读取文件。如果用户没有指定则根据Key或文件名的扩展名生成,如果没有扩展名则填默认值 | application/octet-stream |
Content-Disposition | 指示MINME用户代理如何显示附加的文件,打开或下载,及文件名称 | 无 |
Content-Length | 上传的文件的长度,超过流/文件的长度会截断,不足为实际值 | 流/文件时间长度 |
Expires | 缓存过期时间,OSS未使用,格式是格林威治时间(GMT) | 无 |
Cache-Control | 指定该Object被下载时的网页的缓存行为 | 无 |
/**
* 上传时设置文件的元数据
*
* @param OssClient $ossClient OSSClient实例
* @param string $bucket 存储空间名称
* @return null
*/
function putObject($ossClient, $bucket)
{
$object = "oss-php-sdk-test/upload-test-object-name.txt";
$content = file_get_contents(__FILE__);
$options = array(
OssClient::OSS_HEADERS => array(
'Expires' => '2012-10-01 08:00:00',
'Content-Disposition' => 'attachment; filename="xxxxxx"',
));
try{
$ossClient->putObject($bucket, $object, $content, $options);
} catch(OssException $e) {
printf(__FUNCTION__ . ": FAILED\n");
printf($e->getMessage() . "\n");
return;
}
print(__FUNCTION__ . ": OK" . "\n");
}
提示:
- 通过设置文件的Content-Type,可以修改文件的类型;
- 通过设置文件的Content-Disposition,可以控制文件的下载行为;
- putObject、uploadFile、appendObject、appendFile、multiuploadFile、initiateMultipartUpload操作支持设定Http Header。
<?php
/**
* 上传时设置文件的自定义元数据
*
* @param OssClient $ossClient OSSClient实例
* @param string $bucket 存储空间名称
* @return null
*/
function putObject($ossClient, $bucket)
{
$object = "oss-php-sdk-test/upload-test-object-name.txt";
$content = file_get_contents(__FILE__);
$options = array(OssClient::OSS_HEADERS => array(
'x-oss-meta-self-define-title' => 'user define meta info',
));
try{
$ossClient->putObject($bucket, $object, $content, $options);
} catch(OssException $e) {
printf(__FUNCTION__ . ": FAILED\n");
printf($e->getMessage() . "\n");
return;
}
print(__FUNCTION__ . ": OK" . "\n");
}
提示:
- 文件的元信息可以通过OssClient::getObjectMeta获取;
- user meta的名称大小写不敏感,例如设置为:’x-oss-meta-name’,读取名字为x-oss-meta-name的参数即可;
- 一个文件可以有多个元信息,总大小不能超过8KB;
- putObject、uploadFile、appendObject、appendFile、multiuploadFile、initiateMultipartUpload操作支持设定自定义元信息。
<?php
/**
* 上传时开启MD5校验
*
* @param OssClient $ossClient OSSClient实例
* @param string $bucket 存储空间名称
* @return null
*/
function putObject($ossClient, $bucket)
{
$object = "oss-php-sdk-test/upload-test-object-name.txt";
$options = array(OssClient::OSS_CHECK_MD5 => true);
try{
$ossClient->uploadFile($bucket, $object, __FILE__, $options);
} catch(OssException $e) {
printf(__FUNCTION__ . ": FAILED\n");
printf($e->getMessage() . "\n");
return;
}
print(__FUNCTION__ . ": OK" . "\n");
}
提示:
- 使用Md5校验时,性能会有所损失;
- putObject、uploadFile、appendObject、appendFile、multiuploadFile操作支持 OSS_CHECK_MD5 选择。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。