518 lines
		
	
	
		
			15 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
		
		
			
		
	
	
			518 lines
		
	
	
		
			15 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| 
								 | 
							
								<?php
							 | 
						|||
| 
								 | 
							
								require_once __DIR__ . '/Common.php';
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								use OSS\OssClient;
							 | 
						|||
| 
								 | 
							
								use OSS\Core\OssException;
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								$bucket = Common::getBucketName();
							 | 
						|||
| 
								 | 
							
								$ossClient = Common::getOssClient();
							 | 
						|||
| 
								 | 
							
								if (is_null($ossClient)) exit(1);
							 | 
						|||
| 
								 | 
							
								//*******************************简单使用***************************************************************
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								// 简单上传变量的内容到oss文件
							 | 
						|||
| 
								 | 
							
								$result = $ossClient->putObject($bucket, "b.file", "hi, oss");
							 | 
						|||
| 
								 | 
							
								Common::println("b.file is created");
							 | 
						|||
| 
								 | 
							
								Common::println($result['x-oss-request-id']);
							 | 
						|||
| 
								 | 
							
								Common::println($result['etag']);
							 | 
						|||
| 
								 | 
							
								Common::println($result['content-md5']);
							 | 
						|||
| 
								 | 
							
								Common::println($result['body']);
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								// 上传本地文件
							 | 
						|||
| 
								 | 
							
								$result = $ossClient->uploadFile($bucket, "c.file", __FILE__);
							 | 
						|||
| 
								 | 
							
								Common::println("c.file is created");
							 | 
						|||
| 
								 | 
							
								Common::println("b.file is created");
							 | 
						|||
| 
								 | 
							
								Common::println($result['x-oss-request-id']);
							 | 
						|||
| 
								 | 
							
								Common::println($result['etag']);
							 | 
						|||
| 
								 | 
							
								Common::println($result['content-md5']);
							 | 
						|||
| 
								 | 
							
								Common::println($result['body']);
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								// 下载object到本地变量
							 | 
						|||
| 
								 | 
							
								$content = $ossClient->getObject($bucket, "b.file");
							 | 
						|||
| 
								 | 
							
								Common::println("b.file is fetched, the content is: " . $content);
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								// 给object添加symlink
							 | 
						|||
| 
								 | 
							
								$content = $ossClient->putSymlink($bucket, "test-symlink", "b.file");
							 | 
						|||
| 
								 | 
							
								Common::println("test-symlink is created");
							 | 
						|||
| 
								 | 
							
								Common::println($result['x-oss-request-id']);
							 | 
						|||
| 
								 | 
							
								Common::println($result['etag']);
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								// 获取symlink
							 | 
						|||
| 
								 | 
							
								$content = $ossClient->getSymlink($bucket, "test-symlink");
							 | 
						|||
| 
								 | 
							
								Common::println("test-symlink refer to : " . $content[OssClient::OSS_SYMLINK_TARGET]);
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								// 下载object到本地文件
							 | 
						|||
| 
								 | 
							
								$options = array(
							 | 
						|||
| 
								 | 
							
								    OssClient::OSS_FILE_DOWNLOAD => "./c.file.localcopy",
							 | 
						|||
| 
								 | 
							
								);
							 | 
						|||
| 
								 | 
							
								$ossClient->getObject($bucket, "c.file", $options);
							 | 
						|||
| 
								 | 
							
								Common::println("b.file is fetched to the local file: c.file.localcopy");
							 | 
						|||
| 
								 | 
							
								Common::println("b.file is created");
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								// 拷贝object
							 | 
						|||
| 
								 | 
							
								$result = $ossClient->copyObject($bucket, "c.file", $bucket, "c.file.copy");
							 | 
						|||
| 
								 | 
							
								Common::println("lastModifiedTime: " . $result[0]);
							 | 
						|||
| 
								 | 
							
								Common::println("ETag: " . $result[1]);
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								// 判断object是否存在
							 | 
						|||
| 
								 | 
							
								$doesExist = $ossClient->doesObjectExist($bucket, "c.file.copy");
							 | 
						|||
| 
								 | 
							
								Common::println("file c.file.copy exist? " . ($doesExist ? "yes" : "no"));
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								// 删除object
							 | 
						|||
| 
								 | 
							
								$result = $ossClient->deleteObject($bucket, "c.file.copy");
							 | 
						|||
| 
								 | 
							
								Common::println("c.file.copy is deleted");
							 | 
						|||
| 
								 | 
							
								Common::println("b.file is created");
							 | 
						|||
| 
								 | 
							
								Common::println($result['x-oss-request-id']);
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								// 判断object是否存在
							 | 
						|||
| 
								 | 
							
								$doesExist = $ossClient->doesObjectExist($bucket, "c.file.copy");
							 | 
						|||
| 
								 | 
							
								Common::println("file c.file.copy exist? " . ($doesExist ? "yes" : "no"));
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								// 批量删除object
							 | 
						|||
| 
								 | 
							
								$result = $ossClient->deleteObjects($bucket, array("b.file", "c.file"));
							 | 
						|||
| 
								 | 
							
								foreach($result as $object)
							 | 
						|||
| 
								 | 
							
								    Common::println($object);
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								sleep(2);
							 | 
						|||
| 
								 | 
							
								unlink("c.file.localcopy");
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								//******************************* 完整用法参考下面函数 ****************************************************
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								listObjects($ossClient, $bucket);
							 | 
						|||
| 
								 | 
							
								listAllObjects($ossClient, $bucket);
							 | 
						|||
| 
								 | 
							
								createObjectDir($ossClient, $bucket);
							 | 
						|||
| 
								 | 
							
								putObject($ossClient, $bucket);
							 | 
						|||
| 
								 | 
							
								uploadFile($ossClient, $bucket);
							 | 
						|||
| 
								 | 
							
								getObject($ossClient, $bucket);
							 | 
						|||
| 
								 | 
							
								getObjectToLocalFile($ossClient, $bucket);
							 | 
						|||
| 
								 | 
							
								copyObject($ossClient, $bucket);
							 | 
						|||
| 
								 | 
							
								modifyMetaForObject($ossClient, $bucket);
							 | 
						|||
| 
								 | 
							
								getObjectMeta($ossClient, $bucket);
							 | 
						|||
| 
								 | 
							
								deleteObject($ossClient, $bucket);
							 | 
						|||
| 
								 | 
							
								deleteObjects($ossClient, $bucket);
							 | 
						|||
| 
								 | 
							
								doesObjectExist($ossClient, $bucket);
							 | 
						|||
| 
								 | 
							
								getSymlink($ossClient, $bucket);
							 | 
						|||
| 
								 | 
							
								putSymlink($ossClient, $bucket);
							 | 
						|||
| 
								 | 
							
								/**
							 | 
						|||
| 
								 | 
							
								 * 创建虚拟目录
							 | 
						|||
| 
								 | 
							
								 *
							 | 
						|||
| 
								 | 
							
								 * @param OssClient $ossClient OssClient实例
							 | 
						|||
| 
								 | 
							
								 * @param string $bucket 存储空间名称
							 | 
						|||
| 
								 | 
							
								 * @return null
							 | 
						|||
| 
								 | 
							
								 */
							 | 
						|||
| 
								 | 
							
								function createObjectDir($ossClient, $bucket)
							 | 
						|||
| 
								 | 
							
								{
							 | 
						|||
| 
								 | 
							
								    try {
							 | 
						|||
| 
								 | 
							
								        $ossClient->createObjectDir($bucket, "dir");
							 | 
						|||
| 
								 | 
							
								    } catch (OssException $e) {
							 | 
						|||
| 
								 | 
							
								        printf(__FUNCTION__ . ": FAILED\n");
							 | 
						|||
| 
								 | 
							
								        printf($e->getMessage() . "\n");
							 | 
						|||
| 
								 | 
							
								        return;
							 | 
						|||
| 
								 | 
							
								    }
							 | 
						|||
| 
								 | 
							
								    print(__FUNCTION__ . ": OK" . "\n");
							 | 
						|||
| 
								 | 
							
								}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								/**
							 | 
						|||
| 
								 | 
							
								 * 把本地变量的内容到文件
							 | 
						|||
| 
								 | 
							
								 *
							 | 
						|||
| 
								 | 
							
								 * 简单上传,上传指定变量的内存值作为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();
							 | 
						|||
| 
								 | 
							
								    try {
							 | 
						|||
| 
								 | 
							
								        $ossClient->putObject($bucket, $object, $content, $options);
							 | 
						|||
| 
								 | 
							
								    } catch (OssException $e) {
							 | 
						|||
| 
								 | 
							
								        printf(__FUNCTION__ . ": FAILED\n");
							 | 
						|||
| 
								 | 
							
								        printf($e->getMessage() . "\n");
							 | 
						|||
| 
								 | 
							
								        return;
							 | 
						|||
| 
								 | 
							
								    }
							 | 
						|||
| 
								 | 
							
								    print(__FUNCTION__ . ": OK" . "\n");
							 | 
						|||
| 
								 | 
							
								}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								/**
							 | 
						|||
| 
								 | 
							
								 * 上传指定的本地文件内容
							 | 
						|||
| 
								 | 
							
								 *
							 | 
						|||
| 
								 | 
							
								 * @param OssClient $ossClient OssClient实例
							 | 
						|||
| 
								 | 
							
								 * @param string $bucket 存储空间名称
							 | 
						|||
| 
								 | 
							
								 * @return null
							 | 
						|||
| 
								 | 
							
								 */
							 | 
						|||
| 
								 | 
							
								function uploadFile($ossClient, $bucket)
							 | 
						|||
| 
								 | 
							
								{
							 | 
						|||
| 
								 | 
							
								    $object = "oss-php-sdk-test/upload-test-object-name.txt";
							 | 
						|||
| 
								 | 
							
								    $filePath = __FILE__;
							 | 
						|||
| 
								 | 
							
								    $options = array();
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								    try {
							 | 
						|||
| 
								 | 
							
								        $ossClient->uploadFile($bucket, $object, $filePath, $options);
							 | 
						|||
| 
								 | 
							
								    } catch (OssException $e) {
							 | 
						|||
| 
								 | 
							
								        printf(__FUNCTION__ . ": FAILED\n");
							 | 
						|||
| 
								 | 
							
								        printf($e->getMessage() . "\n");
							 | 
						|||
| 
								 | 
							
								        return;
							 | 
						|||
| 
								 | 
							
								    }
							 | 
						|||
| 
								 | 
							
								    print(__FUNCTION__ . ": OK" . "\n");
							 | 
						|||
| 
								 | 
							
								}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								/**
							 | 
						|||
| 
								 | 
							
								 * 列出Bucket内所有目录和文件, 注意如果符合条件的文件数目超过设置的max-keys, 用户需要使用返回的nextMarker作为入参,通过
							 | 
						|||
| 
								 | 
							
								 * 循环调用ListObjects得到所有的文件,具体操作见下面的 listAllObjects 示例
							 | 
						|||
| 
								 | 
							
								 *
							 | 
						|||
| 
								 | 
							
								 * @param OssClient $ossClient OssClient实例
							 | 
						|||
| 
								 | 
							
								 * @param string $bucket 存储空间名称
							 | 
						|||
| 
								 | 
							
								 * @return null
							 | 
						|||
| 
								 | 
							
								 */
							 | 
						|||
| 
								 | 
							
								function listObjects($ossClient, $bucket)
							 | 
						|||
| 
								 | 
							
								{
							 | 
						|||
| 
								 | 
							
								    $prefix = 'oss-php-sdk-test/';
							 | 
						|||
| 
								 | 
							
								    $delimiter = '/';
							 | 
						|||
| 
								 | 
							
								    $nextMarker = '';
							 | 
						|||
| 
								 | 
							
								    $maxkeys = 1000;
							 | 
						|||
| 
								 | 
							
								    $options = array(
							 | 
						|||
| 
								 | 
							
								        'delimiter' => $delimiter,
							 | 
						|||
| 
								 | 
							
								        'prefix' => $prefix,
							 | 
						|||
| 
								 | 
							
								        'max-keys' => $maxkeys,
							 | 
						|||
| 
								 | 
							
								        'marker' => $nextMarker,
							 | 
						|||
| 
								 | 
							
								    );
							 | 
						|||
| 
								 | 
							
								    try {
							 | 
						|||
| 
								 | 
							
								        $listObjectInfo = $ossClient->listObjects($bucket, $options);
							 | 
						|||
| 
								 | 
							
								    } catch (OssException $e) {
							 | 
						|||
| 
								 | 
							
								        printf(__FUNCTION__ . ": FAILED\n");
							 | 
						|||
| 
								 | 
							
								        printf($e->getMessage() . "\n");
							 | 
						|||
| 
								 | 
							
								        return;
							 | 
						|||
| 
								 | 
							
								    }
							 | 
						|||
| 
								 | 
							
								    print(__FUNCTION__ . ": OK" . "\n");
							 | 
						|||
| 
								 | 
							
								    $objectList = $listObjectInfo->getObjectList(); // 文件列表
							 | 
						|||
| 
								 | 
							
								    $prefixList = $listObjectInfo->getPrefixList(); // 目录列表
							 | 
						|||
| 
								 | 
							
								    if (!empty($objectList)) {
							 | 
						|||
| 
								 | 
							
								        print("objectList:\n");
							 | 
						|||
| 
								 | 
							
								        foreach ($objectList as $objectInfo) {
							 | 
						|||
| 
								 | 
							
								            print($objectInfo->getKey() . "\n");
							 | 
						|||
| 
								 | 
							
								        }
							 | 
						|||
| 
								 | 
							
								    }
							 | 
						|||
| 
								 | 
							
								    if (!empty($prefixList)) {
							 | 
						|||
| 
								 | 
							
								        print("prefixList: \n");
							 | 
						|||
| 
								 | 
							
								        foreach ($prefixList as $prefixInfo) {
							 | 
						|||
| 
								 | 
							
								            print($prefixInfo->getPrefix() . "\n");
							 | 
						|||
| 
								 | 
							
								        }
							 | 
						|||
| 
								 | 
							
								    }
							 | 
						|||
| 
								 | 
							
								}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								/**
							 | 
						|||
| 
								 | 
							
								 * 列出Bucket内所有目录和文件, 根据返回的nextMarker循环得到所有Objects
							 | 
						|||
| 
								 | 
							
								 *
							 | 
						|||
| 
								 | 
							
								 * @param OssClient $ossClient OssClient实例
							 | 
						|||
| 
								 | 
							
								 * @param string $bucket 存储空间名称
							 | 
						|||
| 
								 | 
							
								 * @return null
							 | 
						|||
| 
								 | 
							
								 */
							 | 
						|||
| 
								 | 
							
								function listAllObjects($ossClient, $bucket)
							 | 
						|||
| 
								 | 
							
								{
							 | 
						|||
| 
								 | 
							
								    //构造dir下的文件和虚拟目录
							 | 
						|||
| 
								 | 
							
								    for ($i = 0; $i < 100; $i += 1) {
							 | 
						|||
| 
								 | 
							
								        $ossClient->putObject($bucket, "dir/obj" . strval($i), "hi");
							 | 
						|||
| 
								 | 
							
								        $ossClient->createObjectDir($bucket, "dir/obj" . strval($i));
							 | 
						|||
| 
								 | 
							
								    }
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								    $prefix = 'dir/';
							 | 
						|||
| 
								 | 
							
								    $delimiter = '/';
							 | 
						|||
| 
								 | 
							
								    $nextMarker = '';
							 | 
						|||
| 
								 | 
							
								    $maxkeys = 30;
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								    while (true) {
							 | 
						|||
| 
								 | 
							
								        $options = array(
							 | 
						|||
| 
								 | 
							
								            'delimiter' => $delimiter,
							 | 
						|||
| 
								 | 
							
								            'prefix' => $prefix,
							 | 
						|||
| 
								 | 
							
								            'max-keys' => $maxkeys,
							 | 
						|||
| 
								 | 
							
								            'marker' => $nextMarker,
							 | 
						|||
| 
								 | 
							
								        );
							 | 
						|||
| 
								 | 
							
								        var_dump($options);
							 | 
						|||
| 
								 | 
							
								        try {
							 | 
						|||
| 
								 | 
							
								            $listObjectInfo = $ossClient->listObjects($bucket, $options);
							 | 
						|||
| 
								 | 
							
								        } catch (OssException $e) {
							 | 
						|||
| 
								 | 
							
								            printf(__FUNCTION__ . ": FAILED\n");
							 | 
						|||
| 
								 | 
							
								            printf($e->getMessage() . "\n");
							 | 
						|||
| 
								 | 
							
								            return;
							 | 
						|||
| 
								 | 
							
								        }
							 | 
						|||
| 
								 | 
							
								        // 得到nextMarker,从上一次listObjects读到的最后一个文件的下一个文件开始继续获取文件列表
							 | 
						|||
| 
								 | 
							
								        $nextMarker = $listObjectInfo->getNextMarker();
							 | 
						|||
| 
								 | 
							
								        $listObject = $listObjectInfo->getObjectList();
							 | 
						|||
| 
								 | 
							
								        $listPrefix = $listObjectInfo->getPrefixList();
							 | 
						|||
| 
								 | 
							
								        var_dump(count($listObject));
							 | 
						|||
| 
								 | 
							
								        var_dump(count($listPrefix));
							 | 
						|||
| 
								 | 
							
								        if ($nextMarker === '') {
							 | 
						|||
| 
								 | 
							
								            break;
							 | 
						|||
| 
								 | 
							
								        }
							 | 
						|||
| 
								 | 
							
								    }
							 | 
						|||
| 
								 | 
							
								}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								/**
							 | 
						|||
| 
								 | 
							
								 * 获取object的内容
							 | 
						|||
| 
								 | 
							
								 *
							 | 
						|||
| 
								 | 
							
								 * @param OssClient $ossClient OssClient实例
							 | 
						|||
| 
								 | 
							
								 * @param string $bucket 存储空间名称
							 | 
						|||
| 
								 | 
							
								 * @return null
							 | 
						|||
| 
								 | 
							
								 */
							 | 
						|||
| 
								 | 
							
								function getObject($ossClient, $bucket)
							 | 
						|||
| 
								 | 
							
								{
							 | 
						|||
| 
								 | 
							
								    $object = "oss-php-sdk-test/upload-test-object-name.txt";
							 | 
						|||
| 
								 | 
							
								    $options = array();
							 | 
						|||
| 
								 | 
							
								    try {
							 | 
						|||
| 
								 | 
							
								        $content = $ossClient->getObject($bucket, $object, $options);
							 | 
						|||
| 
								 | 
							
								    } catch (OssException $e) {
							 | 
						|||
| 
								 | 
							
								        printf(__FUNCTION__ . ": FAILED\n");
							 | 
						|||
| 
								 | 
							
								        printf($e->getMessage() . "\n");
							 | 
						|||
| 
								 | 
							
								        return;
							 | 
						|||
| 
								 | 
							
								    }
							 | 
						|||
| 
								 | 
							
								    print(__FUNCTION__ . ": OK" . "\n");
							 | 
						|||
| 
								 | 
							
								    if (file_get_contents(__FILE__) === $content) {
							 | 
						|||
| 
								 | 
							
								        print(__FUNCTION__ . ": FileContent checked OK" . "\n");
							 | 
						|||
| 
								 | 
							
								    } else {
							 | 
						|||
| 
								 | 
							
								        print(__FUNCTION__ . ": FileContent checked FAILED" . "\n");
							 | 
						|||
| 
								 | 
							
								    }
							 | 
						|||
| 
								 | 
							
								}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								/**
							 | 
						|||
| 
								 | 
							
								 * put symlink
							 | 
						|||
| 
								 | 
							
								 *
							 | 
						|||
| 
								 | 
							
								 * @param OssClient $ossClient OssClient实例
							 | 
						|||
| 
								 | 
							
								 * @param string $bucket 存储空间名称
							 | 
						|||
| 
								 | 
							
								 * @return null
							 | 
						|||
| 
								 | 
							
								 */
							 | 
						|||
| 
								 | 
							
								function putSymlink($ossClient, $bucket)
							 | 
						|||
| 
								 | 
							
								{
							 | 
						|||
| 
								 | 
							
								    $symlink = "test-samples-symlink";
							 | 
						|||
| 
								 | 
							
								    $object = "test-samples-object";
							 | 
						|||
| 
								 | 
							
								    try {
							 | 
						|||
| 
								 | 
							
								        $ossClient->putObject($bucket, $object, 'test-content');
							 | 
						|||
| 
								 | 
							
								        $ossClient->putSymlink($bucket, $symlink, $object);
							 | 
						|||
| 
								 | 
							
								        $content = $ossClient->getObject($bucket, $symlink);
							 | 
						|||
| 
								 | 
							
								    } catch (OssException $e) {
							 | 
						|||
| 
								 | 
							
								        printf(__FUNCTION__ . ": FAILED\n");
							 | 
						|||
| 
								 | 
							
								        printf($e->getMessage() . "\n");
							 | 
						|||
| 
								 | 
							
								        return;
							 | 
						|||
| 
								 | 
							
								    }
							 | 
						|||
| 
								 | 
							
								    print(__FUNCTION__ . ": OK" . "\n");
							 | 
						|||
| 
								 | 
							
								    if ($content == 'test-content') {
							 | 
						|||
| 
								 | 
							
								        print(__FUNCTION__ . ": putSymlink checked OK" . "\n");
							 | 
						|||
| 
								 | 
							
								    } else {
							 | 
						|||
| 
								 | 
							
								        print(__FUNCTION__ . ": putSymlink checked FAILED" . "\n");
							 | 
						|||
| 
								 | 
							
								    }
							 | 
						|||
| 
								 | 
							
								}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								/**
							 | 
						|||
| 
								 | 
							
								 * 获取symlink
							 | 
						|||
| 
								 | 
							
								 *
							 | 
						|||
| 
								 | 
							
								 * @param OssClient $ossClient OssClient实例
							 | 
						|||
| 
								 | 
							
								 * @param string $bucket 存储空间名称
							 | 
						|||
| 
								 | 
							
								 * @return null
							 | 
						|||
| 
								 | 
							
								 */
							 | 
						|||
| 
								 | 
							
								function getSymlink($ossClient, $bucket)
							 | 
						|||
| 
								 | 
							
								{
							 | 
						|||
| 
								 | 
							
								    $symlink = "test-samples-symlink";
							 | 
						|||
| 
								 | 
							
								    $object = "test-samples-object";
							 | 
						|||
| 
								 | 
							
								    try {
							 | 
						|||
| 
								 | 
							
								        $ossClient->putObject($bucket, $object, 'test-content');
							 | 
						|||
| 
								 | 
							
								        $ossClient->putSymlink($bucket, $symlink, $object);
							 | 
						|||
| 
								 | 
							
								        $content = $ossClient->getSymlink($bucket, $symlink);
							 | 
						|||
| 
								 | 
							
								    } catch (OssException $e) {
							 | 
						|||
| 
								 | 
							
								        printf(__FUNCTION__ . ": FAILED\n");
							 | 
						|||
| 
								 | 
							
								        printf($e->getMessage() . "\n");
							 | 
						|||
| 
								 | 
							
								        return;
							 | 
						|||
| 
								 | 
							
								    }
							 | 
						|||
| 
								 | 
							
								    print(__FUNCTION__ . ": OK" . "\n");
							 | 
						|||
| 
								 | 
							
								    if ($content[OssClient::OSS_SYMLINK_TARGET]) {
							 | 
						|||
| 
								 | 
							
								        print(__FUNCTION__ . ": getSymlink checked OK" . "\n");
							 | 
						|||
| 
								 | 
							
								    } else {
							 | 
						|||
| 
								 | 
							
								        print(__FUNCTION__ . ": getSymlink checked FAILED" . "\n");
							 | 
						|||
| 
								 | 
							
								    }
							 | 
						|||
| 
								 | 
							
								}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								/**
							 | 
						|||
| 
								 | 
							
								 * 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/upload-test-object-name.txt";
							 | 
						|||
| 
								 | 
							
								    $localfile = "upload-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");
							 | 
						|||
| 
								 | 
							
								    if (file_get_contents($localfile) === file_get_contents(__FILE__)) {
							 | 
						|||
| 
								 | 
							
								        print(__FUNCTION__ . ": FileContent checked OK" . "\n");
							 | 
						|||
| 
								 | 
							
								    } else {
							 | 
						|||
| 
								 | 
							
								        print(__FUNCTION__ . ": FileContent checked FAILED" . "\n");
							 | 
						|||
| 
								 | 
							
								    }
							 | 
						|||
| 
								 | 
							
								    if (file_exists($localfile)) {
							 | 
						|||
| 
								 | 
							
								        unlink($localfile);
							 | 
						|||
| 
								 | 
							
								    }
							 | 
						|||
| 
								 | 
							
								}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								/**
							 | 
						|||
| 
								 | 
							
								 * 拷贝object
							 | 
						|||
| 
								 | 
							
								 * 当目的object和源object完全相同时,表示修改object的meta信息
							 | 
						|||
| 
								 | 
							
								 *
							 | 
						|||
| 
								 | 
							
								 * @param OssClient $ossClient OssClient实例
							 | 
						|||
| 
								 | 
							
								 * @param string $bucket 存储空间名称
							 | 
						|||
| 
								 | 
							
								 * @return null
							 | 
						|||
| 
								 | 
							
								 */
							 | 
						|||
| 
								 | 
							
								function copyObject($ossClient, $bucket)
							 | 
						|||
| 
								 | 
							
								{
							 | 
						|||
| 
								 | 
							
								    $fromBucket = $bucket;
							 | 
						|||
| 
								 | 
							
								    $fromObject = "oss-php-sdk-test/upload-test-object-name.txt";
							 | 
						|||
| 
								 | 
							
								    $toBucket = $bucket;
							 | 
						|||
| 
								 | 
							
								    $toObject = $fromObject . '.copy';
							 | 
						|||
| 
								 | 
							
								    $options = array();
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								    try {
							 | 
						|||
| 
								 | 
							
								        $ossClient->copyObject($fromBucket, $fromObject, $toBucket, $toObject, $options);
							 | 
						|||
| 
								 | 
							
								    } catch (OssException $e) {
							 | 
						|||
| 
								 | 
							
								        printf(__FUNCTION__ . ": FAILED\n");
							 | 
						|||
| 
								 | 
							
								        printf($e->getMessage() . "\n");
							 | 
						|||
| 
								 | 
							
								        return;
							 | 
						|||
| 
								 | 
							
								    }
							 | 
						|||
| 
								 | 
							
								    print(__FUNCTION__ . ": OK" . "\n");
							 | 
						|||
| 
								 | 
							
								}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								/**
							 | 
						|||
| 
								 | 
							
								 * 修改Object Meta
							 | 
						|||
| 
								 | 
							
								 * 利用copyObject接口的特性:当目的object和源object完全相同时,表示修改object的meta信息
							 | 
						|||
| 
								 | 
							
								 *
							 | 
						|||
| 
								 | 
							
								 * @param OssClient $ossClient OssClient实例
							 | 
						|||
| 
								 | 
							
								 * @param string $bucket 存储空间名称
							 | 
						|||
| 
								 | 
							
								 * @return null
							 | 
						|||
| 
								 | 
							
								 */
							 | 
						|||
| 
								 | 
							
								function modifyMetaForObject($ossClient, $bucket)
							 | 
						|||
| 
								 | 
							
								{
							 | 
						|||
| 
								 | 
							
								    $fromBucket = $bucket;
							 | 
						|||
| 
								 | 
							
								    $fromObject = "oss-php-sdk-test/upload-test-object-name.txt";
							 | 
						|||
| 
								 | 
							
								    $toBucket = $bucket;
							 | 
						|||
| 
								 | 
							
								    $toObject = $fromObject;
							 | 
						|||
| 
								 | 
							
								    $copyOptions = array(
							 | 
						|||
| 
								 | 
							
								        OssClient::OSS_HEADERS => array(
							 | 
						|||
| 
								 | 
							
								            'Cache-Control' => 'max-age=60',
							 | 
						|||
| 
								 | 
							
								            'Content-Disposition' => 'attachment; filename="xxxxxx"',
							 | 
						|||
| 
								 | 
							
								        ),
							 | 
						|||
| 
								 | 
							
								    );
							 | 
						|||
| 
								 | 
							
								    try {
							 | 
						|||
| 
								 | 
							
								        $ossClient->copyObject($fromBucket, $fromObject, $toBucket, $toObject, $copyOptions);
							 | 
						|||
| 
								 | 
							
								    } catch (OssException $e) {
							 | 
						|||
| 
								 | 
							
								        printf(__FUNCTION__ . ": FAILED\n");
							 | 
						|||
| 
								 | 
							
								        printf($e->getMessage() . "\n");
							 | 
						|||
| 
								 | 
							
								        return;
							 | 
						|||
| 
								 | 
							
								    }
							 | 
						|||
| 
								 | 
							
								    print(__FUNCTION__ . ": OK" . "\n");
							 | 
						|||
| 
								 | 
							
								}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								/**
							 | 
						|||
| 
								 | 
							
								 * 获取object meta, 也就是getObjectMeta接口
							 | 
						|||
| 
								 | 
							
								 *
							 | 
						|||
| 
								 | 
							
								 * @param OssClient $ossClient OssClient实例
							 | 
						|||
| 
								 | 
							
								 * @param string $bucket 存储空间名称
							 | 
						|||
| 
								 | 
							
								 * @return null
							 | 
						|||
| 
								 | 
							
								 */
							 | 
						|||
| 
								 | 
							
								function getObjectMeta($ossClient, $bucket)
							 | 
						|||
| 
								 | 
							
								{
							 | 
						|||
| 
								 | 
							
								    $object = "oss-php-sdk-test/upload-test-object-name.txt";
							 | 
						|||
| 
								 | 
							
								    try {
							 | 
						|||
| 
								 | 
							
								        $objectMeta = $ossClient->getObjectMeta($bucket, $object);
							 | 
						|||
| 
								 | 
							
								    } catch (OssException $e) {
							 | 
						|||
| 
								 | 
							
								        printf(__FUNCTION__ . ": FAILED\n");
							 | 
						|||
| 
								 | 
							
								        printf($e->getMessage() . "\n");
							 | 
						|||
| 
								 | 
							
								        return;
							 | 
						|||
| 
								 | 
							
								    }
							 | 
						|||
| 
								 | 
							
								    print(__FUNCTION__ . ": OK" . "\n");
							 | 
						|||
| 
								 | 
							
								    if (isset($objectMeta[strtolower('Content-Disposition')]) &&
							 | 
						|||
| 
								 | 
							
								        'attachment; filename="xxxxxx"' === $objectMeta[strtolower('Content-Disposition')]
							 | 
						|||
| 
								 | 
							
								    ) {
							 | 
						|||
| 
								 | 
							
								        print(__FUNCTION__ . ": ObjectMeta checked OK" . "\n");
							 | 
						|||
| 
								 | 
							
								    } else {
							 | 
						|||
| 
								 | 
							
								        print(__FUNCTION__ . ": ObjectMeta checked FAILED" . "\n");
							 | 
						|||
| 
								 | 
							
								    }
							 | 
						|||
| 
								 | 
							
								}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								/**
							 | 
						|||
| 
								 | 
							
								 * 删除object
							 | 
						|||
| 
								 | 
							
								 *
							 | 
						|||
| 
								 | 
							
								 * @param OssClient $ossClient OssClient实例
							 | 
						|||
| 
								 | 
							
								 * @param string $bucket 存储空间名称
							 | 
						|||
| 
								 | 
							
								 * @return null
							 | 
						|||
| 
								 | 
							
								 */
							 | 
						|||
| 
								 | 
							
								function deleteObject($ossClient, $bucket)
							 | 
						|||
| 
								 | 
							
								{
							 | 
						|||
| 
								 | 
							
								    $object = "oss-php-sdk-test/upload-test-object-name.txt";
							 | 
						|||
| 
								 | 
							
								    try {
							 | 
						|||
| 
								 | 
							
								        $ossClient->deleteObject($bucket, $object);
							 | 
						|||
| 
								 | 
							
								    } catch (OssException $e) {
							 | 
						|||
| 
								 | 
							
								        printf(__FUNCTION__ . ": FAILED\n");
							 | 
						|||
| 
								 | 
							
								        printf($e->getMessage() . "\n");
							 | 
						|||
| 
								 | 
							
								        return;
							 | 
						|||
| 
								 | 
							
								    }
							 | 
						|||
| 
								 | 
							
								    print(__FUNCTION__ . ": OK" . "\n");
							 | 
						|||
| 
								 | 
							
								}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								/**
							 | 
						|||
| 
								 | 
							
								 * 批量删除object
							 | 
						|||
| 
								 | 
							
								 *
							 | 
						|||
| 
								 | 
							
								 * @param OssClient $ossClient OssClient实例
							 | 
						|||
| 
								 | 
							
								 * @param string $bucket 存储空间名称
							 | 
						|||
| 
								 | 
							
								 * @return null
							 | 
						|||
| 
								 | 
							
								 */
							 | 
						|||
| 
								 | 
							
								function deleteObjects($ossClient, $bucket)
							 | 
						|||
| 
								 | 
							
								{
							 | 
						|||
| 
								 | 
							
								    $objects = array();
							 | 
						|||
| 
								 | 
							
								    $objects[] = "oss-php-sdk-test/upload-test-object-name.txt";
							 | 
						|||
| 
								 | 
							
								    $objects[] = "oss-php-sdk-test/upload-test-object-name.txt.copy";
							 | 
						|||
| 
								 | 
							
								    try {
							 | 
						|||
| 
								 | 
							
								        $ossClient->deleteObjects($bucket, $objects);
							 | 
						|||
| 
								 | 
							
								    } catch (OssException $e) {
							 | 
						|||
| 
								 | 
							
								        printf(__FUNCTION__ . ": FAILED\n");
							 | 
						|||
| 
								 | 
							
								        printf($e->getMessage() . "\n");
							 | 
						|||
| 
								 | 
							
								        return;
							 | 
						|||
| 
								 | 
							
								    }
							 | 
						|||
| 
								 | 
							
								    print(__FUNCTION__ . ": OK" . "\n");
							 | 
						|||
| 
								 | 
							
								}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								/**
							 | 
						|||
| 
								 | 
							
								 * 判断object是否存在
							 | 
						|||
| 
								 | 
							
								 *
							 | 
						|||
| 
								 | 
							
								 * @param OssClient $ossClient OssClient实例
							 | 
						|||
| 
								 | 
							
								 * @param string $bucket 存储空间名称
							 | 
						|||
| 
								 | 
							
								 * @return null
							 | 
						|||
| 
								 | 
							
								 */
							 | 
						|||
| 
								 | 
							
								function doesObjectExist($ossClient, $bucket)
							 | 
						|||
| 
								 | 
							
								{
							 | 
						|||
| 
								 | 
							
								    $object = "oss-php-sdk-test/upload-test-object-name.txt";
							 | 
						|||
| 
								 | 
							
								    try {
							 | 
						|||
| 
								 | 
							
								        $exist = $ossClient->doesObjectExist($bucket, $object);
							 | 
						|||
| 
								 | 
							
								    } catch (OssException $e) {
							 | 
						|||
| 
								 | 
							
								        printf(__FUNCTION__ . ": FAILED\n");
							 | 
						|||
| 
								 | 
							
								        printf($e->getMessage() . "\n");
							 | 
						|||
| 
								 | 
							
								        return;
							 | 
						|||
| 
								 | 
							
								    }
							 | 
						|||
| 
								 | 
							
								    print(__FUNCTION__ . ": OK" . "\n");
							 | 
						|||
| 
								 | 
							
								    var_dump($exist);
							 | 
						|||
| 
								 | 
							
								}
							 | 
						|||
| 
								 | 
							
								
							 |