• 关于

    __FUNCTION__

    的搜索结果

回答

var Speed_1 = 10; //速度(毫秒) var Space_1 = 24; //每次移动(px) var PageWidth_1 = 128 * 6; //翻页宽度 var interval_1 = 6000; //翻页间隔时间 var fill_1 = ; //整体移位 var MoveLock_1 = false; var MoveTimeObj_1; var MoveWay_1="right"; var Comp_1 = ; var AutoPlayObj_1=null; function GetObj(objName){if(document.getElementById){return eval('document.getElementById("'+objName+'")')}else{return eval('document.all.'+objName)}} function AutoPlay_1(){clearInterval(AutoPlayObj_1);AutoPlayObj_1=setInterval('ISL_GoDown_1();ISL_StopDown_1();',interval_1)} function ISL_GoUp_1(){if(MoveLock_1)return;clearInterval(AutoPlayObj_1);MoveLock_1=true;MoveWay_1="left";MoveTimeObj_1=setInterval('ISL_ScrUp_1();',Speed_1);} function ISL_StopUp_1(){if(MoveWay_1 == "right"){return};clearInterval(MoveTimeObj_1);if((GetObj('ISL_Cont_1').scrollLeft-fill_1)%PageWidth_1!=){Comp_1=fill_1-(GetObj('ISL_Cont_1').scrollLeft%PageWidth_1);CompScr_1()}else{MoveLock_1=false} AutoPlay_1()} function ISL_ScrUp_1(){if(GetObj('ISL_Cont_1').scrollLeft<=){GetObj('ISL_Cont_1').scrollLeft=GetObj('ISL_Cont_1').scrollLeft+GetObj('List1_1').offsetWidth} GetObj('ISL_Cont_1').scrollLeft-=Space_1} function ISL_GoDown_1(){clearInterval(MoveTimeObj_1);if(MoveLock_1)return;clearInterval(AutoPlayObj_1);MoveLock_1=true;MoveWay_1="right";ISL_ScrDown_1();MoveTimeObj_1=setInterval('ISL_ScrDown_1()',Speed_1)} function ISL_StopDown_1(){if(MoveWay_1 == "left"){return};clearInterval(MoveTimeObj_1);if(GetObj('ISL_Cont_1').scrollLeft%PageWidth_1-(fill_1>=?fill_1:fill_1+1)!=){Comp_1=PageWidth_1-GetObj('ISL_Cont_1').scrollLeft%PageWidth_1+fill_1;CompScr_1()}else{MoveLock_1=false} AutoPlay_1()} function ISL_ScrDown_1(){if(GetObj('ISL_Cont_1').scrollLeft>=GetObj('List1_1').scrollWidth){GetObj('ISL_Cont_1').scrollLeft=GetObj('ISL_Cont_1').scrollLeft-GetObj('List1_1').scrollWidth} GetObj('ISL_Cont_1').scrollLeft+=Space_1} function CompScr_1(){if(Comp_1==){MoveLock_1=false;return} var num,TempSpeed=Speed_1,TempSpace=Space_1;if(Math.abs(Comp_1)<PageWidth_1/2){TempSpace=Math.round(Math.abs(Comp_1/Space_1));if(TempSpace<1){TempSpace=1}} if(Comp_1<){if(Comp_1<-TempSpace){Comp_1+=TempSpace;num=TempSpace}else{num=-Comp_1;Comp_1=} GetObj('ISL_Cont_1').scrollLeft-=num;setTimeout('CompScr_1()',TempSpeed)}else{if(Comp_1>TempSpace){Comp_1-=TempSpace;num=TempSpace}else{num=Comp_1;Comp_1=} GetObj('ISL_Cont_1').scrollLeft+=num;setTimeout('CompScr_1()',TempSpeed)}} function picrun_ini(){ GetObj("List2_1").innerHTML=GetObj("List1_1").innerHTML; GetObj('ISL_Cont_1').scrollLeft=fill_1>=?fill_1:GetObj('List1_1').scrollWidth-Math.abs(fill_1); GetObj("ISL_Cont_1").onmouseover=function(){clearInterval(AutoPlayObj_1)} GetObj("ISL_Cont_1").onmouseout=function(){AutoPlay_1()} AutoPlay_1(); } </script>
a123456678 2019-12-02 03:10:28 0 浏览量 回答数 0

问题

求教php扩展中实例化对象并调用方法

使用函数宏call_user_function调用类中的方法:如下: ZEND_FUNCTION(call_say){ //调用myclass中的say方法 zval *obj,*method_construct,*method_say,*...
落地花开啦 2019-12-01 19:58:46 1054 浏览量 回答数 1

问题

Python 有没有一种方法可以在限定类中的函数必须返回特定数据类型的内容?

我知道Python没有强类型,并且它不支持指定返回类型的关键字,例如Java和C中的void,int等。我也知道我们可以使用类型提示来告诉用户他们可以从函数中返回某种特定类型的东西。 我正在尝试实...
is大龙 2020-03-24 21:39:34 11 浏览量 回答数 1

回答

我这个是链表尾部开始的,和这个头部开始的差不多 let a = { value: 1, next: { value: 2, next: { value: 3, next: { value: 4, next: { value: 5, next: { value: 6, next: { value: 7, next: { value: 8, next: { } } } } } } } } } function reverseList(_head, _k) { // 这个求长度可以用循环,用递归长链表容易爆栈 let get_length = (_list) => { if (_list == null || _list.next == null) { return 0 } return get_length(_list.next) + 1 } let list_length = get_length(_head) function jump(_list, _step) { let _t = _list while (_step-- > 0) { _t = _t.next } return _t } function reverse(_node, _step) { if (_step == 0) { return _node } let _rt = reverse(_node.next, _step - 1) _node.next.next = _node _node.next = null return _rt } let _count = list_length % _k let _link = { next: _head } let _link_postion = jump(_link, _count) let _next_start_position = null; while (_count < list_length) { let _current_start_position = _link_postion.next _next_start_position = jump(_link_postion, _k + 1) _link_postion.next = reverse(_current_start_position, _k - 1) _link_postion = jump(_link_postion, _k) _link_postion.next = _next_start_position _count = _count + _k; } return _link.next } console.log(reverseList(a, 4))
游客p7wlo4q4jr4va 2020-05-23 13:20:51 0 浏览量 回答数 0

回答

详细解答可以参考官方帮助文档-- -- Package body for the 'emp_admin' package. -- CREATE OR REPLACE PACKAGE BODY emp_admin IS -- -- Function that queries the 'dept' table based on the department -- number and returns the corresponding department name. -- FUNCTION get_dept_name ( p_deptno IN NUMBER ) RETURN VARCHAR2 IS v_dname VARCHAR2(14); BEGIN SELECT dname INTO v_dname FROM dept WHERE deptno = p_deptno; RETURN v_dname; EXCEPTION WHEN NO_DATA_FOUND THEN DBMS_OUTPUT.PUT_LINE('Invalid department number ' || p_deptno); RETURN ''; END; -- -- Function that updates an employee's salary based on the -- employee number and salary increment/decrement passed -- as IN parameters. Upon successful completion the function -- returns the new updated salary. -- FUNCTION update_emp_sal ( p_empno IN NUMBER, p_raise IN NUMBER ) RETURN NUMBER IS v_sal NUMBER := 0; BEGIN SELECT sal INTO v_sal FROM emp WHERE empno = p_empno; v_sal := v_sal + p_raise; UPDATE emp SET sal = v_sal WHERE empno = p_empno; RETURN v_sal; EXCEPTION WHEN NO_DATA_FOUND THEN DBMS_OUTPUT.PUT_LINE('Employee ' || p_empno || ' not found'); RETURN -1; WHEN OTHERS THEN DBMS_OUTPUT.PUT_LINE('The following is SQLERRM:'); DBMS_OUTPUT.PUT_LINE(SQLERRM); DBMS_OUTPUT.PUT_LINE('The following is SQLCODE:'); DBMS_OUTPUT.PUT_LINE(SQLCODE); RETURN -1; END; -- -- Procedure that inserts a new employee record into the 'emp' table. -- PROCEDURE hire_emp ( p_empno NUMBER, p_ename VARCHAR2, p_job VARCHAR2, p_sal NUMBER, p_hiredate DATE, p_comm NUMBER, p_mgr NUMBER, p_deptno NUMBER ) AS BEGIN INSERT INTO emp(empno, ename, job, sal, hiredate, comm, mgr, deptno) VALUES(p_empno, p_ename, p_job, p_sal, p_hiredate, p_comm, p_mgr, p_deptno); END; -- -- Procedure that deletes an employee record from the 'emp' table based -- on the employee number. -- PROCEDURE fire_emp ( p_empno NUMBER ) AS BEGIN DELETE FROM emp WHERE empno = p_empno; END; END;
2019-12-01 22:57:15 0 浏览量 回答数 0

问题

搭建apache+svn 环境,当安装serf-1.3.3.tar.bz2 时遇到下面的问题?跪求高手指教!

[root@server0 serf-1.3.3]# scons APR=/usr/local/apr/bin/apr-1-config APU=/usr/local/apr/bin/apu-1-config OPENSSL=/usr/lo...
杨冬芳 2019-12-01 20:20:42 2059 浏览量 回答数 0

回答

<p><a>[Python] dir() 与 __dict__,__slots__ 的区别 </a>指出:<br> "不是所有的对象都有 __dict__ 属性。例如,如果你在一个类中添加了 __slots__ 属性,那么这个类的实例将不会拥有 __dict__ 属性,但是 dir() 仍然可以找到并列出它的实例所有有效属性"。</p>     代码: print(Demo.__dict__) 是要打印出类 class Demo 的字典。这行代码没错。结果这个类的字典就打印出来了。 然而,楼主的代码,在类 Demo 中添加了__slots__ 属性: __slots__ = ('sex',) 因此,Demo 类的实例 x 将不再拥有 __dict__ 属性,如果遇到要显示这个不再拥有的属性( __dict__), 如代码: x.__dict__ ,当然要报错。 不过,调用 dir() 仍然可以找到并列出它的实例, 即x,的所有有效属性, 包括 __lots__ 和 sex。 下列代码,可以证明以上解释: class Demo(object): __slots__ = ('sex',) def __init__(self, sex): self.sex = sex super(Demo, self).__init__() x = Demo('男') print(Demo.__dict__) print(x.sex) print(dir(x)) 输出: {'__module__': '__main__', '__slots__': ('sex',), '__init__': <function Demo.__init__ at 0x005CA810>, 'sex': <member 'sex' of 'Demo' objects>, '__doc__': None} 男 ['__class__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__slots__', '__str__', '__subclasshook__', 'sex']   感谢解答
爱吃鱼的程序员 2020-06-05 15:34:42 0 浏览量 回答数 0

回答

ReCsdk 编译报ssl 没有参照的错 我也遇到同样的问题, ../../build_out/libaliot_sdk.a(aliot_net.o): In function `read_ssl': /home/zzh/work/aliot_sdk_v1.0.1_release/src/utility/aliot_net.c:59: undefined reference to `aliot_platform_ssl_read' ../../build_out/libaliot_sdk.a(aliot_net.o): In function `write_ssl': /home/zzh/work/aliot_sdk_v1.0.1_release/src/utility/aliot_net.c:69: undefined reference to `aliot_platform_ssl_write' ../../build_out/libaliot_sdk.a(aliot_net.o): In function `disconnect_ssl': /home/zzh/work/aliot_sdk_v1.0.1_release/src/utility/aliot_net.c:79: undefined reference to `aliot_platform_ssl_destroy' ../../build_out/libaliot_sdk.a(aliot_net.o): In function `connect_ssl': /home/zzh/work/aliot_sdk_v1.0.1_release/src/utility/aliot_net.c:92: undefined reference to `aliot_platform_ssl_establish' collect2: ld returned 1 exit status make[1]: *** [all] Error 1 make[1]: Leaving directory `/home/zzh/work/aliot_sdk_v1.0.1_release/sample/mqtt' make: *** [sample] Error 2
jerry71815 2019-12-02 01:24:59 0 浏览量 回答数 0

问题

继承自python的'File'类并定义自定义行为 - python2和3

我试图自定义文件句柄的行为在两个python 2.7和python 3.x(至少>=3.6)的库中。 我正在实现的自定义行为要求在close调用方法时执行某些操作(direct(fh.close())或作为__exit__()方法的结...
一码平川MACHEL 2019-12-01 19:32:05 419 浏览量 回答数 1

回答

开始,把php_tclip.h中的全局变量声明部分修改为如下: ZEND_BEGIN_MODULE_GLOBALS(tclip) CascadeClassifier face_cascade; char *face_config_path; ZEND_END_MODULE_GLOBALS(tclip)结果报如下错误: error: ‘CascadeClassifier’ does not name a type 看来这个类没有在头文件中声明。那就另辟蹊径,改为其它方式。把代码改为 ZEND_BEGIN_MODULE_GLOBALS(tclip) void *face_cascade; char *face_config_path; ZEND_END_MODULE_GLOBALS(tclip)然后在tclip.c中进行了如下修改: 1.首先定义了一个全局变量。 static CascadeClassifier face_cascade;2.修改PHP_MINIT_FUNCTION(tclip)。代码如下: PHP_MINIT_FUNCTION(tclip){ /* If you have INI entries, uncomment these lines */ REGISTER_INI_ENTRIES(); string face_config_path = (TCLIP_G(face_config_path) == "" || TCLIP_G(face_config_path) == NULL)? "/usr/local/share/OpenCV/haarcascades/haarcascade_frontalface_alt.xml" :TCLIP_G(face_config_path); if( !face_cascade.load( face_config_path ) ){ php_error_docref(NULL TSRMLS_CC, E_WARNING, "can not load classifier file!%s", face_config_path.c_str()); return FAILURE; } TCLIP_G(face_cascade) = &face_cascade; return SUCCESS; } 调用全局对象的方式如下: ((CascadeClassifier *)TCLIP_G(face_cascade))->detectMultiScale( img_gray, faces, 1.1, 2, 0|CV_HAAR_SCALE_IMAGE, Size(30, 30) );注意,php扩展想线程安全,那就用相关宏来访问全局变量。如上面的TCLIP_G(face_cascade)。 参考资料 php扩展中如何定义线程安全的全局对象
exinnet 2019-12-02 01:32:22 0 浏览量 回答数 0

问题

linux 安装gd库报错求大神解决?报错

gd_png.c:16:53: error: png.h: No such file or directory gd_png.c:47: error: expected specifier-qualifier-list before &#...
爱吃鱼的程序员 2020-06-14 20:44:23 0 浏览量 回答数 1

回答

pg_current_xlog_insert_location() text 获取当前事务日志的插入位置 ,指还在wal buffer中的位置。 pg_current_xlog_location() text 获取当前事务日志的写入位置,指已经调用了write后的位置(但是sync到磁盘之前),所以一定不在wal buffer了. /* * Report the current WAL write location (same format as pg_start_backup etc) * * This is useful for determining how much of WAL is visible to an external * archiving process. Note that the data before this point is written out * to the kernel, but is not necessarily synced to disk. */ Datum pg_current_xlog_location(PG_FUNCTION_ARGS) { XLogRecPtr current_recptr; if (RecoveryInProgress()) ereport(ERROR, (errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE), errmsg("recovery is in progress"), errhint("WAL control functions cannot be executed during recovery."))); current_recptr = GetXLogWriteRecPtr(); PG_RETURN_LSN(current_recptr); } /* * Report the current WAL insert location (same format as pg_start_backup etc) * * This function is mostly for debugging purposes. */ Datum pg_current_xlog_insert_location(PG_FUNCTION_ARGS) { XLogRecPtr current_recptr; if (RecoveryInProgress()) ereport(ERROR, (errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE), errmsg("recovery is in progress"), errhint("WAL control functions cannot be executed during recovery."))); current_recptr = GetXLogInsertRecPtr(); PG_RETURN_LSN(current_recptr); }
德哥 2019-12-02 01:29:51 0 浏览量 回答数 0

回答

不要这样做: from my_module import my_function_with_global_var 但是这个: import my_module 然后,您可以注入MY_CONFIG_VARIABLEimport my_module,而无需像这样更改被测系统: class TestSomething(unittest.TestCase): # Fixed that for you! def test_first_case(self): my_module.MY_CONFIG_VARIABLE = True self.assertEqual(my_module.my_function_with_global_var(), "First result") def test_second_case(self): my_module.MY_CONFIG_VARIABLE = False self.assertEqual(my_module.my_function_with_global_var(), "Second result") 我对“ 如何模拟pyunit的stdin的输入”的回答做了类似的事情?。
祖安文状元 2020-02-22 15:43:30 0 浏览量 回答数 0

回答

/** * 获取客户端IP地址 * @return string */ function get_client_ip() { if(getenv('HTTP_CLIENT_IP')){ $client_ip = getenv('HTTP_CLIENT_IP'); } elseif(getenv('HTTP_X_FORWARDED_FOR')) { $client_ip = getenv('HTTP_X_FORWARDED_FOR'); } elseif(getenv('REMOTE_ADDR')) { $client_ip = getenv('REMOTE_ADDR'); } else { $client_ip = $_SERVER['REMOTE_ADDR']; } return $client_ip; } /** 获取服务器端IP地址 * @return string */ function get_server_ip() { if (isset($_SERVER)) { if($_SERVER['SERVER_ADDR']) { $server_ip = $_SERVER['SERVER_ADDR']; } else { $server_ip = $_SERVER['LOCAL_ADDR']; } } else { $server_ip = getenv('SERVER_ADDR'); } return $server_ip; }
小旋风柴进 2019-12-02 02:01:48 0 浏览量 回答数 0

回答

详细解答可以参考官方帮助文档存储空间(Bucket)是对象(Object)的容器,对象必须隶属于某个存储空间。 以下场景的完整代码请参见GitHub。 创建存储空间以下代码用于创建存储空间: <?phpif (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;use OSS\Core\OssException;// 阿里云主账号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>";try { $ossClient = new OssClient($accessKeyId, $accessKeySecret, $endpoint); // 设置存储空间的存储类型为低频访问类型,默认是标准类型。 $options = array( OssClient::OSS_STORAGE => OssClient::OSS_STORAGE_IA ); // 设置存储空间的权限为公共读,默认是私有读写。 $ossClient->createBucket($bucket, OssClient::OSS_ACL_TYPE_PUBLIC_READ, $options);} catch (OssException $e) { printf(__FUNCTION__ . ": FAILED\n"); printf($e->getMessage() . "\n"); return;}print(__FUNCTION__ . ": OK" . "\n"); 存储空间的命名规范,请参见基本概念中的命名规范。 判断存储空间是否存在以下代码用于判断指定的存储空间是否存在: <?phpif (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;use OSS\Core\OssException;// 阿里云主账号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>";try { $ossClient = new OssClient($accessKeyId, $accessKeySecret, $endpoint); $res = $ossClient->doesBucketExist($bucket);} catch (OssException $e) { printf(__FUNCTION__ . ": FAILED\n"); printf($e->getMessage() . "\n"); return;}if ($res === true) { print(__FUNCTION__ . ": OK" . "\n");} else { print(__FUNCTION__ . ": FAILED" . "\n");} 列举存储空间以下代码用于列举存储空间: <?phpif (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;use OSS\Core\OssException;// 阿里云主账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM账号进行API访问或日常运维,请登录 https://ram.console.aliyun.com 创建RAM账号。$accessKeyId = "<yourAccessKeyId>";$accessKeySecret = "<yourAccessKeySecret>";// Endpoint以杭州为例,其它Region请按实际情况填写。$endpoint = "http://oss-cn-hangzhou.aliyuncs.com";try{ $ossClient = new OssClient($accessKeyId, $accessKeySecret, $endpoint); $bucketListInfo = $ossClient->listBuckets();} catch(OssException $e) { printf(__FUNCTION__ . ": FAILED\n"); printf($e->getMessage() . "\n"); return;}$bucketList = $bucketListInfo->getBucketList();foreach($bucketList as $bucket) { print($bucket->getLocation() . "\t" . $bucket->getName() . "\t" . $bucket->getCreatedate() . "\n");} 设置存储空间的访问权限存储空间的访问权限(ACL)有以下三类: 访问权限 描述 访问权限值 私有 存储空间的拥有者和授权用户有该存储空间内的文件的读写权限,其他用户没有权限操作该存储空间内的文件。 OssClient::OSS_ACL_TYPE_PRIVATE 公共读 存储空间的拥有者和授权用户有该存储空间内的文件的读写权限,其他用户只有该存储空间内的文件的读权限。请谨慎使用该权限。 OssClient::OSS_ACL_TYPE_PUBLIC_READ 公共读写 所有用户都有该存储空间内的文件的读写权限。请谨慎使用该权限。 OssClient::OSS_ACL_TYPE_PUBLIC_READ_WRITE 以下代码用于设置存储空间的访问权限: <?phpif (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;use OSS\Core\OssException;// 阿里云主账号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>";// 设置存储空间的权限为私有。$acl = OssClient::OSS_ACL_TYPE_PRIVATE;try { $ossClient = new OssClient($accessKeyId, $accessKeySecret, $endpoint); $ossClient->putBucketAcl($bucket, $acl);} catch (OssException $e) { printf(__FUNCTION__ . ": FAILED\n"); printf($e->getMessage() . "\n"); return;}print(__FUNCTION__ . ": OK" . "\n"); 获取存储空间的访问权限以下代码用于获取存储空间的访问权限: <?phpif (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;use OSS\Core\OssException;// 阿里云主账号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>";try { $ossClient = new OssClient($accessKeyId, $accessKeySecret, $endpoint); $res = $ossClient->getBucketAcl($bucket);} catch (OssException $e) { printf(__FUNCTION__ . ": FAILED\n"); printf($e->getMessage() . "\n"); return;}print(__FUNCTION__ . ": OK" . "\n");print('acl: ' . $res); 获取存储空间的地域以下代码用于获取存储空间的地域(称为Region或Location): <?phpif (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;use OSS\Core\OssException;// 阿里云主账号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>";try { $ossClient = new OssClient($accessKeyId, $accessKeySecret, $endpoint); $Regions = $ossClient->getBucketLocation($bucket);} catch (OssException $e) { printf(__FUNCTION__ . ": FAILED\n"); printf($e->getMessage() . "\n"); return;}print(__FUNCTION__ . ": OK" . "\n");var_dump($Regions); 关于地域的详细信息请参见基本概念中的地域。 获取存储空间元信息以下代码用于获取存储空间元信息: <?phpif (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;use OSS\Core\OssException;// 阿里云主账号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>";try { $ossClient = new OssClient($accessKeyId, $accessKeySecret, $endpoint); $Metas = $ossClient->getBucketMeta($bucket);} catch (OssException $e) { printf(__FUNCTION__ . ": FAILED\n"); printf($e->getMessage() . "\n"); return;}print(__FUNCTION__ . ": OK" . "\n");var_dump($Metas); 删除存储空间删除存储空间之前,必须先删除存储空间下的所有文件、LiveChannel和分片上传产生的碎片。 以下代码用于删除存储空间: <?phpif (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;use OSS\Core\OssException;// 阿里云主账号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>";try{ $ossClient = new OssClient($accessKeyId, $accessKeySecret, $endpoint); $ossClient->deleteBucket($bucket);} catch(OssException $e) { printf(__FUNCTION__ . ": FAILED\n"); printf($e->getMessage() . "\n"); return;}print(__FUNCTION__ . ": OK" . "\n");
2019-12-01 23:14:27 0 浏览量 回答数 0

回答

详细解答可以参考官方帮助文档存储空间(Bucket)是对象(Object)的容器,对象必须隶属于某个存储空间。 以下场景的完整代码请参见GitHub。 创建存储空间以下代码用于创建存储空间: <?phpif (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;use OSS\Core\OssException;// 阿里云主账号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>";try { $ossClient = new OssClient($accessKeyId, $accessKeySecret, $endpoint); // 设置存储空间的存储类型为低频访问类型,默认是标准类型。 $options = array( OssClient::OSS_STORAGE => OssClient::OSS_STORAGE_IA ); // 设置存储空间的权限为公共读,默认是私有读写。 $ossClient->createBucket($bucket, OssClient::OSS_ACL_TYPE_PUBLIC_READ, $options);} catch (OssException $e) { printf(__FUNCTION__ . ": FAILED\n"); printf($e->getMessage() . "\n"); return;}print(__FUNCTION__ . ": OK" . "\n"); 存储空间的命名规范,请参见基本概念中的命名规范。 判断存储空间是否存在以下代码用于判断指定的存储空间是否存在: <?phpif (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;use OSS\Core\OssException;// 阿里云主账号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>";try { $ossClient = new OssClient($accessKeyId, $accessKeySecret, $endpoint); $res = $ossClient->doesBucketExist($bucket);} catch (OssException $e) { printf(__FUNCTION__ . ": FAILED\n"); printf($e->getMessage() . "\n"); return;}if ($res === true) { print(__FUNCTION__ . ": OK" . "\n");} else { print(__FUNCTION__ . ": FAILED" . "\n");} 列举存储空间以下代码用于列举存储空间: <?phpif (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;use OSS\Core\OssException;// 阿里云主账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM账号进行API访问或日常运维,请登录 https://ram.console.aliyun.com 创建RAM账号。$accessKeyId = "<yourAccessKeyId>";$accessKeySecret = "<yourAccessKeySecret>";// Endpoint以杭州为例,其它Region请按实际情况填写。$endpoint = "http://oss-cn-hangzhou.aliyuncs.com";try{ $ossClient = new OssClient($accessKeyId, $accessKeySecret, $endpoint); $bucketListInfo = $ossClient->listBuckets();} catch(OssException $e) { printf(__FUNCTION__ . ": FAILED\n"); printf($e->getMessage() . "\n"); return;}$bucketList = $bucketListInfo->getBucketList();foreach($bucketList as $bucket) { print($bucket->getLocation() . "\t" . $bucket->getName() . "\t" . $bucket->getCreatedate() . "\n");} 设置存储空间的访问权限存储空间的访问权限(ACL)有以下三类: 访问权限 描述 访问权限值 私有 存储空间的拥有者和授权用户有该存储空间内的文件的读写权限,其他用户没有权限操作该存储空间内的文件。 OssClient::OSS_ACL_TYPE_PRIVATE 公共读 存储空间的拥有者和授权用户有该存储空间内的文件的读写权限,其他用户只有该存储空间内的文件的读权限。请谨慎使用该权限。 OssClient::OSS_ACL_TYPE_PUBLIC_READ 公共读写 所有用户都有该存储空间内的文件的读写权限。请谨慎使用该权限。 OssClient::OSS_ACL_TYPE_PUBLIC_READ_WRITE 以下代码用于设置存储空间的访问权限: <?phpif (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;use OSS\Core\OssException;// 阿里云主账号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>";// 设置存储空间的权限为私有。$acl = OssClient::OSS_ACL_TYPE_PRIVATE;try { $ossClient = new OssClient($accessKeyId, $accessKeySecret, $endpoint); $ossClient->putBucketAcl($bucket, $acl);} catch (OssException $e) { printf(__FUNCTION__ . ": FAILED\n"); printf($e->getMessage() . "\n"); return;}print(__FUNCTION__ . ": OK" . "\n"); 获取存储空间的访问权限以下代码用于获取存储空间的访问权限: <?phpif (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;use OSS\Core\OssException;// 阿里云主账号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>";try { $ossClient = new OssClient($accessKeyId, $accessKeySecret, $endpoint); $res = $ossClient->getBucketAcl($bucket);} catch (OssException $e) { printf(__FUNCTION__ . ": FAILED\n"); printf($e->getMessage() . "\n"); return;}print(__FUNCTION__ . ": OK" . "\n");print('acl: ' . $res); 获取存储空间的地域以下代码用于获取存储空间的地域(称为Region或Location): <?phpif (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;use OSS\Core\OssException;// 阿里云主账号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>";try { $ossClient = new OssClient($accessKeyId, $accessKeySecret, $endpoint); $Regions = $ossClient->getBucketLocation($bucket);} catch (OssException $e) { printf(__FUNCTION__ . ": FAILED\n"); printf($e->getMessage() . "\n"); return;}print(__FUNCTION__ . ": OK" . "\n");var_dump($Regions); 关于地域的详细信息请参见基本概念中的地域。 获取存储空间元信息以下代码用于获取存储空间元信息: <?phpif (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;use OSS\Core\OssException;// 阿里云主账号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>";try { $ossClient = new OssClient($accessKeyId, $accessKeySecret, $endpoint); $Metas = $ossClient->getBucketMeta($bucket);} catch (OssException $e) { printf(__FUNCTION__ . ": FAILED\n"); printf($e->getMessage() . "\n"); return;}print(__FUNCTION__ . ": OK" . "\n");var_dump($Metas); 删除存储空间删除存储空间之前,必须先删除存储空间下的所有文件、LiveChannel和分片上传产生的碎片。 以下代码用于删除存储空间: <?phpif (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;use OSS\Core\OssException;// 阿里云主账号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>";try{ $ossClient = new OssClient($accessKeyId, $accessKeySecret, $endpoint); $ossClient->deleteBucket($bucket);} catch(OssException $e) { printf(__FUNCTION__ . ": FAILED\n"); printf($e->getMessage() . "\n"); return;}print(__FUNCTION__ . ": OK" . "\n");
2019-12-01 23:14:27 0 浏览量 回答数 0

回答

详细解答可以参考官方帮助文档存储空间(Bucket)是对象(Object)的容器,对象必须隶属于某个存储空间。 以下场景的完整代码请参见GitHub。 创建存储空间以下代码用于创建存储空间: <?phpif (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;use OSS\Core\OssException;// 阿里云主账号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>";try { $ossClient = new OssClient($accessKeyId, $accessKeySecret, $endpoint); // 设置存储空间的存储类型为低频访问类型,默认是标准类型。 $options = array( OssClient::OSS_STORAGE => OssClient::OSS_STORAGE_IA ); // 设置存储空间的权限为公共读,默认是私有读写。 $ossClient->createBucket($bucket, OssClient::OSS_ACL_TYPE_PUBLIC_READ, $options);} catch (OssException $e) { printf(__FUNCTION__ . ": FAILED\n"); printf($e->getMessage() . "\n"); return;}print(__FUNCTION__ . ": OK" . "\n"); 存储空间的命名规范,请参见基本概念中的命名规范。 判断存储空间是否存在以下代码用于判断指定的存储空间是否存在: <?phpif (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;use OSS\Core\OssException;// 阿里云主账号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>";try { $ossClient = new OssClient($accessKeyId, $accessKeySecret, $endpoint); $res = $ossClient->doesBucketExist($bucket);} catch (OssException $e) { printf(__FUNCTION__ . ": FAILED\n"); printf($e->getMessage() . "\n"); return;}if ($res === true) { print(__FUNCTION__ . ": OK" . "\n");} else { print(__FUNCTION__ . ": FAILED" . "\n");} 列举存储空间以下代码用于列举存储空间: <?phpif (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;use OSS\Core\OssException;// 阿里云主账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM账号进行API访问或日常运维,请登录 https://ram.console.aliyun.com 创建RAM账号。$accessKeyId = "<yourAccessKeyId>";$accessKeySecret = "<yourAccessKeySecret>";// Endpoint以杭州为例,其它Region请按实际情况填写。$endpoint = "http://oss-cn-hangzhou.aliyuncs.com";try{ $ossClient = new OssClient($accessKeyId, $accessKeySecret, $endpoint); $bucketListInfo = $ossClient->listBuckets();} catch(OssException $e) { printf(__FUNCTION__ . ": FAILED\n"); printf($e->getMessage() . "\n"); return;}$bucketList = $bucketListInfo->getBucketList();foreach($bucketList as $bucket) { print($bucket->getLocation() . "\t" . $bucket->getName() . "\t" . $bucket->getCreatedate() . "\n");} 设置存储空间的访问权限存储空间的访问权限(ACL)有以下三类: 访问权限 描述 访问权限值 私有 存储空间的拥有者和授权用户有该存储空间内的文件的读写权限,其他用户没有权限操作该存储空间内的文件。 OssClient::OSS_ACL_TYPE_PRIVATE 公共读 存储空间的拥有者和授权用户有该存储空间内的文件的读写权限,其他用户只有该存储空间内的文件的读权限。请谨慎使用该权限。 OssClient::OSS_ACL_TYPE_PUBLIC_READ 公共读写 所有用户都有该存储空间内的文件的读写权限。请谨慎使用该权限。 OssClient::OSS_ACL_TYPE_PUBLIC_READ_WRITE 以下代码用于设置存储空间的访问权限: <?phpif (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;use OSS\Core\OssException;// 阿里云主账号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>";// 设置存储空间的权限为私有。$acl = OssClient::OSS_ACL_TYPE_PRIVATE;try { $ossClient = new OssClient($accessKeyId, $accessKeySecret, $endpoint); $ossClient->putBucketAcl($bucket, $acl);} catch (OssException $e) { printf(__FUNCTION__ . ": FAILED\n"); printf($e->getMessage() . "\n"); return;}print(__FUNCTION__ . ": OK" . "\n"); 获取存储空间的访问权限以下代码用于获取存储空间的访问权限: <?phpif (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;use OSS\Core\OssException;// 阿里云主账号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>";try { $ossClient = new OssClient($accessKeyId, $accessKeySecret, $endpoint); $res = $ossClient->getBucketAcl($bucket);} catch (OssException $e) { printf(__FUNCTION__ . ": FAILED\n"); printf($e->getMessage() . "\n"); return;}print(__FUNCTION__ . ": OK" . "\n");print('acl: ' . $res); 获取存储空间的地域以下代码用于获取存储空间的地域(称为Region或Location): <?phpif (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;use OSS\Core\OssException;// 阿里云主账号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>";try { $ossClient = new OssClient($accessKeyId, $accessKeySecret, $endpoint); $Regions = $ossClient->getBucketLocation($bucket);} catch (OssException $e) { printf(__FUNCTION__ . ": FAILED\n"); printf($e->getMessage() . "\n"); return;}print(__FUNCTION__ . ": OK" . "\n");var_dump($Regions); 关于地域的详细信息请参见基本概念中的地域。 获取存储空间元信息以下代码用于获取存储空间元信息: <?phpif (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;use OSS\Core\OssException;// 阿里云主账号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>";try { $ossClient = new OssClient($accessKeyId, $accessKeySecret, $endpoint); $Metas = $ossClient->getBucketMeta($bucket);} catch (OssException $e) { printf(__FUNCTION__ . ": FAILED\n"); printf($e->getMessage() . "\n"); return;}print(__FUNCTION__ . ": OK" . "\n");var_dump($Metas); 删除存储空间删除存储空间之前,必须先删除存储空间下的所有文件、LiveChannel和分片上传产生的碎片。 以下代码用于删除存储空间: <?phpif (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;use OSS\Core\OssException;// 阿里云主账号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>";try{ $ossClient = new OssClient($accessKeyId, $accessKeySecret, $endpoint); $ossClient->deleteBucket($bucket);} catch(OssException $e) { printf(__FUNCTION__ . ": FAILED\n"); printf($e->getMessage() . "\n"); return;}print(__FUNCTION__ . ": OK" . "\n");
2019-12-01 23:14:27 0 浏览量 回答数 0

回答

//测试成功 setInterval("time_controller()",1000); function time_controller(){ $(".time_val").each(function(){ var time_id = "time_show_"+$(this).attr('for'); var time_val= $(this).attr('value'); $(this).attr('value',time_val-1); show_time(time_id,time_val*1000); }); } function show_time(id,timestamp) { var timer = document.getElementById(id); var str_time,int_day,int_hour,int_minute,int_second; var time_distance = timestamp; if(time_distance>0) { int_day=Math.floor(time_distance/86400000) time_distance-=int_day*86400000; int_hour=Math.floor(time_distance/3600000) time_distance-=int_hour*3600000; int_minute=Math.floor(time_distance/60000) time_distance-=int_minute*60000; int_second=Math.floor(time_distance/1000) if(int_hour<10) int_hour="0"+int_hour; if(int_minute<10) int_minute="0"+int_minute; if(int_second<10) int_second="0"+int_second; str_time="<b>剩余时间:"+int_day+"天"+int_hour+"小时"+int_minute+"分钟"+int_second+"秒</b>"; timer.innerHTML=str_time; }else{ timer.innerHTML="<b>剩余时间: 0天0小时0分钟0秒</b>"; } } //html部分,php 和 js 的时间倒计时 <div class="time" id="time_show_{$list.cmd_id}"></div> <input type="hidden" class="time_val" for="{$list.cmd_id}" value="{$list.time_val}" />
小旋风柴进 2019-12-02 02:01:44 0 浏览量 回答数 0

问题

安装aliyun-oss-c-sdk在make步骤出错,有人遇到过没?

Scanning dependencies of target oss_c_sdk[ 1%] Building C object CMakeFiles/oss_c_sdk.dir/oss_c_sdk/aos_buf.o[ 2%] Bui...
zw.unix 2019-12-01 19:35:01 829 浏览量 回答数 2

回答

我们还没有谈到__exit__方法的这三个参数:type, value和traceback。 在第4步和第6步之间,如果发生异常,Python会将异常的type,value和traceback传递给__exit__方法。 它让__exit__方法来决定如何关闭文件以及是否需要其他步骤。在我们的案例中,我们并没有注意它们。 那如果我们的文件对象抛出一个异常呢?万一我们尝试访问文件对象的一个不支持的方法。举个例子: with File('demo.txt', 'w') as opened_file: opened_file.undefined_function('Hola!') 我们来列一下,当异常发生时,with语句会采取哪些步骤。 1. 它把异常的type,value和traceback传递给__exit__方法 2. 它让__exit__方法来处理异常 3. 如果__exit__返回的是True,那么这个异常就被优雅地处理了。 4. 如果__exit__返回的是True以外的任何东西,那么这个异常将被with语句抛出。 在我们的案例中,__exit__方法返回的是None(如果没有return语句那么方法会返回None)。因此,with语句抛出了那个异常。 Traceback (most recent call last): File "<stdin>", line 2, in <module> AttributeError: 'file' object has no attribute 'undefined_function' 我们尝试下在__exit__方法中处理异常: class File(object): def __init__(self, file_name, method): self.file_obj = open(file_name, method) def __enter__(self): return self.file_obj def __exit__(self, type, value, traceback): print("Exception has been handled") self.file_obj.close() return True with File('demo.txt', 'w') as opened_file: opened_file.undefined_function() # Output: Exception has been handled 我们的__exit__方法返回了True,因此没有异常会被with语句抛出。 这还不是实现上下文管理器的唯一方式。还有一种方式,我们会在下一节中一起看看。
montos 2020-04-16 21:46:01 0 浏览量 回答数 0

回答

和验证码差不多一个意思吧。。客户端有可能修改过这个值。可以增加别人用curl进行模拟登陆的难度1.首先先申明一个函数 /** * _check_uniqid * @param unknown_type $_first_uniqid * @param unknown_type $_end_uniqid */ function _check_uniqid($_first_uniqid,$_end_uniqid) { if ((strlen($_first_uniqid) != 40) || ($_first_uniqid != $_end_uniqid)) { _alert_back('唯一标识符异常'); } return _mysql_string($_first_uniqid); }2.在代码中调用该函数//判断是否提交了 if ($_GET['action'] == 'register') { //为了防止恶意注册,跨站攻击 _check_code($_POST['code'],$_SESSION['code']); //引入验证文件 include ROOT_PATH.'includes/register.func.php'; //创建一个空数组,用来存放提交过来的合法数据 $_clean = array(); //可以通过唯一标识符来防止恶意注册,伪装表单跨站攻击等。 //这个存放入数据库的唯一标识符还有第二个用处,就是登录cookies验证 $_clean['uniqid'] = _check_uniqid($_POST['uniqid'],$_SESSION['uniqid']); //active也是一个唯一标识符,用来刚注册的用户进行激活处理,方可登录。 $_clean['active'] = _sha1_uniqid(); print_r($_clean); } else { $_SESSION['uniqid'] = $_uniqid = _sha1_uniqid(); } 3.在global.func.php调用function _sha1_uniqid() { return _mysql_string(sha1(uniqid(rand(),true))); }
小旋风柴进 2019-12-02 02:00:17 0 浏览量 回答数 0

问题

让 WordPress 飞起来的几个 function

介绍 WordPress 毕竟是歪果仁开发的系统放到中国来会有一些水土不服,因为有广泛的使用到一些境外网站服务以及一些不必要的功能导致 WP 网站变慢,这里就将介绍如何通过 function.php 来精...
妙正灰 2019-12-01 21:21:58 4471 浏览量 回答数 3

问题

集成实人认证编译失败!如何解决?

Undefined symbols for architecture arm64: "inflateInit", referenced from: _C28W9QNLT3uK in SGMain(SGMain99999999...
游客sj4dzfuuwhupq 2020-06-30 12:00:03 60 浏览量 回答数 1

回答

每个对象都会有一个__doc__属性,用于描述该对象的作用。在一个模块被import时,其文件中的某些特殊的字符串会被python解释器保存在相应对象的__doc__属性中。比如,一个模块有模块的__doc__,一个class或function也有其对应的__doc__属性。在python中,一个模块其实就是一个.py文件。在文件中特殊的地方书写的字符串就是所谓的docstrings,就是将被放到__doc__的内容。这个“特殊的地方”包括:一个文件任何一条可执行的代码之前 #模块的__doc__一个类,在类定义语句后,任何可执行代码前#类的__doc__一个函数,在函数定义语句后,任何可执行代码前#函数的__doc__举个例子:use doc 属性class MyClass:'string.' def printSay(): 'print say welcome to you.' print 'say welcome to you.'print MyClass.__doc__print MyClass.printSay.__doc__输出结果string.print say welcome to you.
世事皆空 2019-12-02 01:07:53 0 浏览量 回答数 0

回答

首先看一下需求,现在有一张日志表,现在需要按表中的操作时间字段(operation_time)分区,如下图: 这个需求就是一个典型的按时间创建分区表,首先看一下步骤: 创建父表创建n个子表,每个子表都是继承于父表定义一个规则(Rule)或触发器(Trigger),把对主表的数据插入重定向到合适的分区表如上所示,整体的大步骤就分为以上三个,当然还可以有一些小的优化措施,比如对于每个分区,在关键字字段上创建一个索引等等。首先来看第一步——创建父表。 在创建分区表之前应当先创建一张“父表”,所有分区表都从它继承,这个表中没有数据,也不要在这个表上定义任何检查约束及索引,现在我们就先创建这样一张表,但之前先建一个序列: CREATE SEQUENCE "public"."t_sys_log_main_id_seq" INCREMENT 1 MINVALUE 1 MAXVALUE 99999999 START 1 CACHE 1; ALTER TABLE "public"."t_sys_log_main_id_seq" OWNER TO "postgres"; 接下来创建“父表”,因为是日志表,所以表名命名为“t_sys_log_main”: CREATE TABLE "public"."t_sys_log_main" ("id" int4 DEFAULT nextval('t_sys_log_main_id_seq'::regclass) NOT NULL,"account_affiliation_code" varchar(100) COLLATE "default" NOT NULL,"account_affiliation" varchar(50) COLLATE "default" NOT NULL,"operation_time" timestamp(6) NOT NULL,"operation_key" varchar(2) COLLATE "default" NOT NULL,"operation_value" varchar(30) COLLATE "default" NOT NULL,"operation_loginid" varchar(100) COLLATE "default" NOT NULL,"operation_message" varchar(300) COLLATE "default" NOT NULL,"operation_ip" varchar(30) COLLATE "default" NOT NULL)WITH (OIDS=FALSE) ;COMMENT ON TABLE "public"."t_sys_log_main" IS '系统日志表';COMMENT ON COLUMN "public"."t_sys_log_main"."account_affiliation_code" IS '帐号所属机构代码';COMMENT ON COLUMN "public"."t_sys_log_main"."account_affiliation" IS '帐号所属机构';COMMENT ON COLUMN "public"."t_sys_log_main"."operation_time" IS '操作时间';COMMENT ON COLUMN "public"."t_sys_log_main"."operation_key" IS '操作类型(key)';COMMENT ON COLUMN "public"."t_sys_log_main"."operation_value" IS '操作类型(value)';COMMENT ON COLUMN "public"."t_sys_log_main"."operation_loginid" IS '操作帐号';COMMENT ON COLUMN "public"."t_sys_log_main"."operation_message" IS '操作信息';COMMENT ON COLUMN "public"."t_sys_log_main"."operation_ip" IS '登录地址'; ALTER TABLE "public"."t_sys_log_main" ADD PRIMARY KEY ("id"); 运行以上DDL语句创建父表,创建成功后接下来就可以挨个创建分区表了,由于每个分区表都是从父表继承的,所以分区表不会增加任何字段,下面我们按需求创建4张分区子表,分别用于存放9月、10月、11月和12月的日志数据: create table t_sys_log_y2016m09(CHECK (operation_time >= DATE '2016-09-01' AND operation_time< DATE '2016-10-01'))INHERITS (t_sys_log_main); create table t_sys_log_y2016m10(CHECK (operation_time >= DATE '2016-10-01' AND operation_time< DATE '2016-11-01'))INHERITS (t_sys_log_main); create table t_sys_log_y2016m11(CHECK (operation_time >= DATE '2016-11-01' AND operation_time< DATE '2016-12-01'))INHERITS (t_sys_log_main); create table t_sys_log_y2016m12(CHECK (operation_time >= DATE '2016-12-01' AND operation_time< DATE '2017-01-01'))INHERITS (t_sys_log_main); 如上所示,运行完成后即可创建4张分区子表,在上面的语句中我们添加了一个约束表示只允许插入本月的数据,接下来在这4张分区表的每个分区键上建立索引: create index t_sys_log_y2016m09_operation_time ON t_sys_log_y2016m09(operation_time);create index t_sys_log_y2016m10_operation_time ON t_sys_log_y2016m10(operation_time);create index t_sys_log_y2016m11_operation_time ON t_sys_log_y2016m11(operation_time);create index t_sys_log_y2016m12_operation_time ON t_sys_log_y2016m12(operation_time); 到此为止我们的分区表就创建完毕了,接下来需要考虑数据插入的问题,如何才能让不同日期的数据自动的插入与其对应的分区子表中呢?有两种解决方案,分别是:规则(Rule)和触发器(Trigger),相比触发器,Rule的开销更大,所以我在这里就不做过多介绍了,下面直接介绍Trigger的方式。 Trigger通常会结合自定义函数(Function)来实现分区插入,Function负责根据条件选择插入,而Trigger则负责Function的自动调用。首先定义Function,功能很简单,即根据日期区间insert数据即可: CREATEOR REPLACE FUNCTION sys_log_insert_trigger () RETURNS TRIGGER AS $$ BEGIN IF ( NEW .operation_time >= DATE '2016-09-01' AND NEW .operation_time < DATE '2016-10-01' ) THEN INSERT INTO t_sys_log_y2016m09 VALUES (NEW .*) ; ELSEIF ( NEW .operation_time >= DATE '2016-10-01' AND NEW .operation_time < DATE '2016-11-01' ) THEN INSERT INTO t_sys_log_y2016m10 VALUES (NEW .*) ; ELSEIF ( NEW .operation_time >= DATE '2016-11-01' AND NEW .operation_time < DATE '2016-12-01' ) THEN INSERT INTO t_sys_log_y2016m11 VALUES (NEW .*) ; ELSEIF ( NEW .operation_time >= DATE '2016-12-01' AND NEW .operation_time < DATE '2017-01-01' ) THEN INSERT INTO t_sys_log_y2016m12 VALUES (NEW .*) ; ELSE RAISE EXCEPTION 'Date out of range!' ; END IF ; RETURN NULL ; END ; $$ LANGUAGE plpgsql;最后再创建触发器用于执行刚才的Function: CREATE TRIGGER sys_log_insert_trigger BEFORE INSERT ON t_sys_log_mainFOR EACH ROWEXECUTE PROCEDURE sys_log_insert_trigger(); 到这里就全部创建完成了,最后测试一下看看结果。为了确认我们的触发器的确触发了,我们打开存储过程的统计开关,在postgresql.conf中,找到track_functions,改成all: 接下来就可以运行几条测试insert语句来看看是否能把指定的时间记录分别插入到与其对应的分区子表中,插入之前先看下sys_log_insert_trigger()的统计信息: 可以看到目前没有统计记录,接下来插入几条测试数据: INSERT INTO t_sys_log_main VALUES (1,'200022', '西安高新第一中学初中校区', '2016-9-8 18:49:26.004', '01', 'xx', 'zhsz_t', 'test!', '127.0.0.1');INSERT INTO t_sys_log_main VALUES (1,'200023', '西安高新第一中学初中校区', '2016-9-12 18:49:26.004', '01', 'xx', 'zhsz_t', 'test!', '127.0.0.1');INSERT INTO t_sys_log_main VALUES (1,'200024', '西安高新第一中学初中校区', '2016-10-8 18:49:26.004', '01', 'xx', 'zhsz_t', 'test!', '127.0.0.1');INSERT INTO t_sys_log_main VALUES (1,'200025', '西安高新第一中学初中校区', '2016-11-8 18:49:26.004', '01', 'xx', 'zhsz_t', 'test!', '127.0.0.1');INSERT INTO t_sys_log_main VALUES (1,'200026', '西安高新第一中学初中校区', '2016-12-8 18:49:26.004', '01', 'xx', 'zhsz_t', 'test!', '127.0.0.1');INSERT INTO t_sys_log_main VALUES (1,'200027', '西安高新第一中学初中校区', '2016-12-25 18:49:26.004', '01', 'xx', 'zhsz_t', 'test!', '127.0.0.1');紧接着再看一下sys_log_insert_trigger()的统计信息: 如上图,可以看出调用了6次函数,因为我们插入了6条数据,至此分区表由创建到测试的整个过程就已经成功完成了。 总结简单记录一下PostgreSQL创建分区表的完整步骤以及注意事项
小六码奴 2019-12-02 02:02:34 0 浏览量 回答数 0

回答

详细解答可以参考官方帮助文档您可以通过一系列的接口管理存储空间(Bucket)下的文件(Object)。管理文件的完整代码请参见:GitHub。 判断文件是否存在以下代码用于判断指定的文件是否存在: <?phpif (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;use OSS\Core\OssException;// 阿里云主账号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{ $ossClient = new OssClient($accessKeyId, $accessKeySecret, $endpoint); $exist = $ossClient->doesObjectExist($bucket, $object);} catch(OssException $e) { printf(__FUNCTION__ . ": FAILED\n"); printf($e->getMessage() . "\n"); return;}print(__FUNCTION__ . ": OK" . "\n");var_dump($exist); 文件访问权限文件的访问权限(ACL)有以下四种: 访问权限 描述 访问权限值 继承Bucket 文件遵循存储空间的访问权限。 default 私有 文件的拥有者和授权用户有该文件的读写权限,其他用户没有权限操作该文件。 private 公共读 文件的拥有者和授权用户有该文件的读写权限,其他用户只有文件的读权限。请谨慎使用该权限。 public-read 公共读写 所有用户都有该文件的读写权限。请谨慎使用该权限。 public-read-write 文件的访问权限优先级高于存储空间的访问权限。例如存储空间的访问权限是私有,而文件的访问权限是公共读写,则所有用户都有该文件的读写权限。如果某个文件没有设置过访问权限,则遵循存储空间的访问权限。 设置文件访问权限以下代码用于设置指定文件的访问权限: <?phpif (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;use OSS\Core\OssException;// 阿里云主账号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>";// 设置文件的访问权限为公共读,默认为继承Bucket。$acl = "public-read";try { $ossClient = new OssClient($accessKeyId, $accessKeySecret, $endpoint); $ossClient->putObjectAcl($bucket, $object, $acl);} catch (OssException $e) { printf(__FUNCTION__ . ": FAILED\n"); printf($e->getMessage() . "\n"); return;}print(__FUNCTION__ . ": OK" . "\n"); 获取文件访问权限以下代码用于获取指定文件的访问权限: <?phpif (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;use OSS\Core\OssException;// 阿里云主账号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 { $ossClient = new OssClient($accessKeyId, $accessKeySecret, $endpoint); $objectAcl = $ossClient->getObjectAcl($bucket, $object);} catch (OssException $e) { printf(__FUNCTION__ . ": FAILED\n"); printf($e->getMessage() . "\n"); return;}print(__FUNCTION__ . ": OK" . "\n");var_dump($objectAcl); 文件元信息文件元信息(Object Meta)详情请参见开发指南中的文件元信息。 设置文件元信息以下代码用于设置文件元信息: <?phpif (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;use OSS\Core\OssException;// 阿里云主账号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>";$content = file_get_contents(__FILE__);$options = array( OssClient::OSS_HEADERS => array( 'Expires' => '2012-10-01 08:00:00', 'Content-Disposition' => 'attachment; filename="xxxxxx"', 'x-oss-meta-self-define-title' => 'user define meta info', ));try{ $ossClient = new OssClient($accessKeyId, $accessKeySecret, $endpoint); $ossClient->putObject($bucket, $object, $content, $options);} catch(OssException $e) { printf(__FUNCTION__ . ": FAILED\n"); printf($e->getMessage() . "\n"); return;}print(__FUNCTION__ . ": OK" . "\n"); 修改文件元信息以下代码用于修改文件元信息: <?phpif (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;use OSS\Core\OssException;/// 阿里云主账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM账号进行API访问或日常运维,请登录 https://ram.console.aliyun.com 创建RAM账号。$accessKeyId = "<yourAccessKeyId>";$accessKeySecret = "<yourAccessKeySecret>";// Endpoint以杭州为例,其它Region请按实际情况填写。$endpoint = "http://oss-cn-hangzhou.aliyuncs.com";$fromBucket = "<yourFromBucketName>";$fromObject = "<yourFromObjectName>";$toBucket = "<yourToBucketName>";$toObject = "<yourToObjectName>";$copyOptions = array( OssClient::OSS_HEADERS => array( 'Expires' => '2018-10-01 08:00:00', 'Content-Disposition' => 'attachment; filename="xxxxxx"', 'x-oss-meta-location' => 'location', ),);try{ $ossClient = new OssClient($accessKeyId, $accessKeySecret, $endpoint); $ossClient->copyObject($fromBucket, $fromObject, $toBucket, $toObject, $copyOptions);} catch(OssException $e) { printf(__FUNCTION__ . ": FAILED\n"); printf($e->getMessage() . "\n"); return;}print(__FUNCTION__ . ": OK" . "\n"); 获取文件元信息以下代码用于获取文件元信息: <?phpif (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;use OSS\Core\OssException;// 阿里云主账号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 { $ossClient = new OssClient($accessKeyId, $accessKeySecret, $endpoint); $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");} 列举文件列举所有文件以下代码用于列举指定存储空间下的所有文件: <?phpif (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;use OSS\Core\OssException;// 阿里云主账号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>";$ossClient = new OssClient($accessKeyId, $accessKeySecret, $endpoint);while (true) { 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(); if (!empty($listObject)) { print("objectList:\n"); foreach ($listObject as $objectInfo) { print($objectInfo->getKey() . "\n"); } } if (!empty($listPrefix)) { print("prefixList: \n"); foreach ($listPrefix as $prefixInfo) { print($prefixInfo->getPrefix() . "\n"); } } if ($nextMarker === '') { break; }} 列举指定条件的文件以下代码用于列举指定条件的文件: <?phpif (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;use OSS\Core\OssException;// 阿里云主账号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>";$ossClient = new OssClient($accessKeyId, $accessKeySecret, $endpoint);$prefix = 'dir/';$delimiter = '/';$nextMarker = '';$maxkeys = 10;$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(); // object list$prefixList = $listObjectInfo->getPrefixList(); // directory listif (!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"); }} 上述例子中的$options包含的参数如下: 参数 说明 是否必需 delimiter 对文件名称进行分组的一个字符。CommonPrefixes是以delimiter结尾,并有共同前缀的文件集合。 否 prefix 本次查询结果的前缀。 否 max-keys 列举文件的最大个数。默认为100,最大值为1000。 否 marker 标明本次列举文件的起点。 否 删除文件删除单个文件以下代码用于删除单个文件: <?phpif (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;use OSS\Core\OssException;// 阿里云主账号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{ $ossClient = new OssClient($accessKeyId, $accessKeySecret, $endpoint); $ossClient->deleteObject($bucket, $object);} catch(OssException $e) { printf(__FUNCTION__ . ": FAILED\n"); printf($e->getMessage() . "\n"); return;}print(__FUNCTION__ . ": OK" . "\n"); 删除多个文件以下代码用于批量删除文件: <?phpif (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;use OSS\Core\OssException;// 阿里云主账号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>";$objects = array();$objects[] = "<yourObjectName1>";$objects[] = "<yourObjectName2>";try{ $ossClient = new OssClient($accessKeyId, $accessKeySecret, $endpoint); $ossClient->deleteObjects($bucket, $objects);} catch(OssException $e) { printf(__FUNCTION__ . ": FAILED\n"); printf($e->getMessage() . "\n"); return;}print(__FUNCTION__ . ": OK" . "\n"); 拷贝文件简单拷贝以下代码用于拷贝小于1GB的文件: <?phpif (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;use OSS\Core\OssException;// 阿里云主账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM账号进行API访问或日常运维,请登录 https://ram.console.aliyun.com 创建RAM账号。$accessKeyId = "<yourAccessKeyId>";$accessKeySecret = "<yourAccessKeySecret>";// Endpoint以杭州为例,其它Region请按实际情况填写。$endpoint = "http://oss-cn-hangzhou.aliyuncs.com";$from_bucket = "<yourFromBucketName>";$from_object = "<yourFromObjectName>";$to_bucket = $bucket;$to_object = $from_object . '.copy';try{ $ossClient = new OssClient($accessKeyId, $accessKeySecret, $endpoint); $ossClient->copyObject($from_bucket, $from_object, $to_bucket, $to_object);} catch(OssException $e) { printf(__FUNCTION__ . ": FAILED\n"); printf($e->getMessage() . "\n"); return;}print(__FUNCTION__ . ": OK" . "\n");` 拷贝大文件对于大于1GB的文件,需要使用分片拷贝。分片拷贝分为三步: 通过$ossClient->initiateMultipartUpload初始化分片拷贝任务。通过$ossClient->uploadPartCopy进行分片拷贝。除最后一个分片外,其它分片都要大于100KB。通过$ossClient->completeMultipartUpload提交分片拷贝任务。 以下代码用于分片拷贝: <?phpif (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;use OSS\Core\OssException;// 阿里云主账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM账号进行API访问或日常运维,请登录 https://ram.console.aliyun.com 创建RAM账号。$accessKeyId = "<yourAccessKeyId>";$accessKeySecret = "<yourAccessKeySecret>";// Endpoint以杭州为例,其它Region请按实际情况填写。$endpoint = "http://oss-cn-hangzhou.aliyuncs.com";$src_bucket = "<yourSourceBucketName>";$src_object = "<yourSourceObjectName>";$dst_bucket = "<yourDestinationBucketName>";$dst_object = "<yourDestinationObjectName>";try{ $ossClient = new OssClient($accessKeyId, $accessKeySecret, $endpoint); // 初始化分片。 $upload_id = $ossClient->initiateMultipartUpload($dst_bucket, $dst_object); $copyId = 1; // 逐个分片拷贝。 $eTag = $ossClient->uploadPartCopy( $src_bucket, $src_object, $dst_bucket, $dst_object,$copyId, $upload_id); $upload_parts[] = array( 'PartNumber' => $copyId, 'ETag' => $eTag, ); // 完成分片拷贝。 $result = $ossClient->completeMultipartUpload($dst_bucket, $dst_object, $upload_id, $upload_parts);} catch(OssException $e) { printf(__FUNCTION__ . ": FAILED\n"); printf($e->getMessage() . "\n"); return;}print(__FUNCTION__ . ": OK" . "\n"); 解冻归档文件归档类型(Archive)的文件需要解冻(Restore)之后才能读取。非归档类型的文件,不要调用restoreObject方法。 归档文件的状态变换过程如下: 归档类型的文件初始时处于冷冻状态。提交解冻操作后,服务端执行解冻,文件处于解冻中的状态。完成解冻后,可以读取文件。解冻状态默认持续1天,最多延长7天,之后文件又回到冷冻状态。 以下代码用于解冻归档文件: <?phpif (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;use OSS\Core\OssException;// 阿里云主账号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 { $ossClient = new OssClient($accessKeyId, $accessKeySecret, $endpoint); $ossClient->restoreObject($bucket, $object);} catch (OssException $e) { printf(__FUNCTION__ . ": FAILED\n"); printf($e->getMessage() . "\n"); return;}print(__FUNCTION__ . ": OK" . "\n"); 存储类型详情请参见存储类型。 符号链接创建符号链接符号链接是一种特殊的文件,它指向某个具体的文件,类似于Windows上使用的快捷方式。符号链接支持自定义元信息。 以下代码用于创建符号链接: <?phpif (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;use OSS\Core\OssException;// 阿里云主账号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>";$symlink = "<yourSymlink>";try { $ossClient = new OssClient($accessKeyId, $accessKeySecret, $endpoint); $ossClient->putSymlink($bucket, $symlink, $object);} catch (OssException $e) { printf(__FUNCTION__ . ": FAILED\n"); printf($e->getMessage() . "\n"); return;}print(__FUNCTION__ . ": OK" . "\n"); 获取符号链接指向的文件内容获取符号链接要求您对该符号链接有读权限。以下代码用于获取符号链接指向的文件内容: <?phpif (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;use OSS\Core\OssException;// 阿里云主账号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>";$symlink = "<yourSymlink>";try { $ossClient = new OssClient($accessKeyId, $accessKeySecret, $endpoint); $Symlinks = $ossClient->getSymlink($bucket, $symlink);} catch (OssException $e) { printf(__FUNCTION__ . ": FAILED\n"); printf($e->getMessage() . "\n"); return;}print(__FUNCTION__ . ": OK" . "\n");var_dump($Symlinks); 开启MD5校验MD5校验用于确保数据传输的完整性。使用MD5校验时,性能会有所损失。上传文件时默认关闭MD5校验。 以下代码用于上传文件时开启MD5校验: <?phpif (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;use OSS\Core\OssException;// 阿里云主账号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>";$options = array(OssClient::OSS_CHECK_MD5 => true);try{ $ossClient = new OssClient($accessKeyId, $accessKeySecret, $endpoint); $ossClient->uploadFile($bucket, $object, __FILE__, $options);} catch(OssException $e) { printf(__FUNCTION__ . ": FAILED\n"); printf($e->getMessage() . "\n"); return;}print(__FUNCTION__ . ": OK" . "\n"); putObject、uploadFile、appendObject、appendFile、multiuploadFile方法支持开启MD5校验。
2019-12-01 23:14:28 0 浏览量 回答数 0

回答

详细解答可以参考官方帮助文档您可以通过一系列的接口管理存储空间(Bucket)下的文件(Object)。管理文件的完整代码请参见:GitHub。 判断文件是否存在以下代码用于判断指定的文件是否存在: <?phpif (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;use OSS\Core\OssException;// 阿里云主账号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{ $ossClient = new OssClient($accessKeyId, $accessKeySecret, $endpoint); $exist = $ossClient->doesObjectExist($bucket, $object);} catch(OssException $e) { printf(__FUNCTION__ . ": FAILED\n"); printf($e->getMessage() . "\n"); return;}print(__FUNCTION__ . ": OK" . "\n");var_dump($exist); 文件访问权限文件的访问权限(ACL)有以下四种: 访问权限 描述 访问权限值 继承Bucket 文件遵循存储空间的访问权限。 default 私有 文件的拥有者和授权用户有该文件的读写权限,其他用户没有权限操作该文件。 private 公共读 文件的拥有者和授权用户有该文件的读写权限,其他用户只有文件的读权限。请谨慎使用该权限。 public-read 公共读写 所有用户都有该文件的读写权限。请谨慎使用该权限。 public-read-write 文件的访问权限优先级高于存储空间的访问权限。例如存储空间的访问权限是私有,而文件的访问权限是公共读写,则所有用户都有该文件的读写权限。如果某个文件没有设置过访问权限,则遵循存储空间的访问权限。 设置文件访问权限以下代码用于设置指定文件的访问权限: <?phpif (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;use OSS\Core\OssException;// 阿里云主账号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>";// 设置文件的访问权限为公共读,默认为继承Bucket。$acl = "public-read";try { $ossClient = new OssClient($accessKeyId, $accessKeySecret, $endpoint); $ossClient->putObjectAcl($bucket, $object, $acl);} catch (OssException $e) { printf(__FUNCTION__ . ": FAILED\n"); printf($e->getMessage() . "\n"); return;}print(__FUNCTION__ . ": OK" . "\n"); 获取文件访问权限以下代码用于获取指定文件的访问权限: <?phpif (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;use OSS\Core\OssException;// 阿里云主账号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 { $ossClient = new OssClient($accessKeyId, $accessKeySecret, $endpoint); $objectAcl = $ossClient->getObjectAcl($bucket, $object);} catch (OssException $e) { printf(__FUNCTION__ . ": FAILED\n"); printf($e->getMessage() . "\n"); return;}print(__FUNCTION__ . ": OK" . "\n");var_dump($objectAcl); 文件元信息文件元信息(Object Meta)详情请参见开发指南中的文件元信息。 设置文件元信息以下代码用于设置文件元信息: <?phpif (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;use OSS\Core\OssException;// 阿里云主账号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>";$content = file_get_contents(__FILE__);$options = array( OssClient::OSS_HEADERS => array( 'Expires' => '2012-10-01 08:00:00', 'Content-Disposition' => 'attachment; filename="xxxxxx"', 'x-oss-meta-self-define-title' => 'user define meta info', ));try{ $ossClient = new OssClient($accessKeyId, $accessKeySecret, $endpoint); $ossClient->putObject($bucket, $object, $content, $options);} catch(OssException $e) { printf(__FUNCTION__ . ": FAILED\n"); printf($e->getMessage() . "\n"); return;}print(__FUNCTION__ . ": OK" . "\n"); 修改文件元信息以下代码用于修改文件元信息: <?phpif (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;use OSS\Core\OssException;/// 阿里云主账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM账号进行API访问或日常运维,请登录 https://ram.console.aliyun.com 创建RAM账号。$accessKeyId = "<yourAccessKeyId>";$accessKeySecret = "<yourAccessKeySecret>";// Endpoint以杭州为例,其它Region请按实际情况填写。$endpoint = "http://oss-cn-hangzhou.aliyuncs.com";$fromBucket = "<yourFromBucketName>";$fromObject = "<yourFromObjectName>";$toBucket = "<yourToBucketName>";$toObject = "<yourToObjectName>";$copyOptions = array( OssClient::OSS_HEADERS => array( 'Expires' => '2018-10-01 08:00:00', 'Content-Disposition' => 'attachment; filename="xxxxxx"', 'x-oss-meta-location' => 'location', ),);try{ $ossClient = new OssClient($accessKeyId, $accessKeySecret, $endpoint); $ossClient->copyObject($fromBucket, $fromObject, $toBucket, $toObject, $copyOptions);} catch(OssException $e) { printf(__FUNCTION__ . ": FAILED\n"); printf($e->getMessage() . "\n"); return;}print(__FUNCTION__ . ": OK" . "\n"); 获取文件元信息以下代码用于获取文件元信息: <?phpif (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;use OSS\Core\OssException;// 阿里云主账号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 { $ossClient = new OssClient($accessKeyId, $accessKeySecret, $endpoint); $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");} 列举文件列举所有文件以下代码用于列举指定存储空间下的所有文件: <?phpif (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;use OSS\Core\OssException;// 阿里云主账号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>";$ossClient = new OssClient($accessKeyId, $accessKeySecret, $endpoint);while (true) { 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(); if (!empty($listObject)) { print("objectList:\n"); foreach ($listObject as $objectInfo) { print($objectInfo->getKey() . "\n"); } } if (!empty($listPrefix)) { print("prefixList: \n"); foreach ($listPrefix as $prefixInfo) { print($prefixInfo->getPrefix() . "\n"); } } if ($nextMarker === '') { break; }} 列举指定条件的文件以下代码用于列举指定条件的文件: <?phpif (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;use OSS\Core\OssException;// 阿里云主账号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>";$ossClient = new OssClient($accessKeyId, $accessKeySecret, $endpoint);$prefix = 'dir/';$delimiter = '/';$nextMarker = '';$maxkeys = 10;$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(); // object list$prefixList = $listObjectInfo->getPrefixList(); // directory listif (!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"); }} 上述例子中的$options包含的参数如下: 参数 说明 是否必需 delimiter 对文件名称进行分组的一个字符。CommonPrefixes是以delimiter结尾,并有共同前缀的文件集合。 否 prefix 本次查询结果的前缀。 否 max-keys 列举文件的最大个数。默认为100,最大值为1000。 否 marker 标明本次列举文件的起点。 否 删除文件删除单个文件以下代码用于删除单个文件: <?phpif (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;use OSS\Core\OssException;// 阿里云主账号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{ $ossClient = new OssClient($accessKeyId, $accessKeySecret, $endpoint); $ossClient->deleteObject($bucket, $object);} catch(OssException $e) { printf(__FUNCTION__ . ": FAILED\n"); printf($e->getMessage() . "\n"); return;}print(__FUNCTION__ . ": OK" . "\n"); 删除多个文件以下代码用于批量删除文件: <?phpif (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;use OSS\Core\OssException;// 阿里云主账号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>";$objects = array();$objects[] = "<yourObjectName1>";$objects[] = "<yourObjectName2>";try{ $ossClient = new OssClient($accessKeyId, $accessKeySecret, $endpoint); $ossClient->deleteObjects($bucket, $objects);} catch(OssException $e) { printf(__FUNCTION__ . ": FAILED\n"); printf($e->getMessage() . "\n"); return;}print(__FUNCTION__ . ": OK" . "\n"); 拷贝文件简单拷贝以下代码用于拷贝小于1GB的文件: <?phpif (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;use OSS\Core\OssException;// 阿里云主账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM账号进行API访问或日常运维,请登录 https://ram.console.aliyun.com 创建RAM账号。$accessKeyId = "<yourAccessKeyId>";$accessKeySecret = "<yourAccessKeySecret>";// Endpoint以杭州为例,其它Region请按实际情况填写。$endpoint = "http://oss-cn-hangzhou.aliyuncs.com";$from_bucket = "<yourFromBucketName>";$from_object = "<yourFromObjectName>";$to_bucket = $bucket;$to_object = $from_object . '.copy';try{ $ossClient = new OssClient($accessKeyId, $accessKeySecret, $endpoint); $ossClient->copyObject($from_bucket, $from_object, $to_bucket, $to_object);} catch(OssException $e) { printf(__FUNCTION__ . ": FAILED\n"); printf($e->getMessage() . "\n"); return;}print(__FUNCTION__ . ": OK" . "\n");` 拷贝大文件对于大于1GB的文件,需要使用分片拷贝。分片拷贝分为三步: 通过$ossClient->initiateMultipartUpload初始化分片拷贝任务。通过$ossClient->uploadPartCopy进行分片拷贝。除最后一个分片外,其它分片都要大于100KB。通过$ossClient->completeMultipartUpload提交分片拷贝任务。 以下代码用于分片拷贝: <?phpif (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;use OSS\Core\OssException;// 阿里云主账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM账号进行API访问或日常运维,请登录 https://ram.console.aliyun.com 创建RAM账号。$accessKeyId = "<yourAccessKeyId>";$accessKeySecret = "<yourAccessKeySecret>";// Endpoint以杭州为例,其它Region请按实际情况填写。$endpoint = "http://oss-cn-hangzhou.aliyuncs.com";$src_bucket = "<yourSourceBucketName>";$src_object = "<yourSourceObjectName>";$dst_bucket = "<yourDestinationBucketName>";$dst_object = "<yourDestinationObjectName>";try{ $ossClient = new OssClient($accessKeyId, $accessKeySecret, $endpoint); // 初始化分片。 $upload_id = $ossClient->initiateMultipartUpload($dst_bucket, $dst_object); $copyId = 1; // 逐个分片拷贝。 $eTag = $ossClient->uploadPartCopy( $src_bucket, $src_object, $dst_bucket, $dst_object,$copyId, $upload_id); $upload_parts[] = array( 'PartNumber' => $copyId, 'ETag' => $eTag, ); // 完成分片拷贝。 $result = $ossClient->completeMultipartUpload($dst_bucket, $dst_object, $upload_id, $upload_parts);} catch(OssException $e) { printf(__FUNCTION__ . ": FAILED\n"); printf($e->getMessage() . "\n"); return;}print(__FUNCTION__ . ": OK" . "\n"); 解冻归档文件归档类型(Archive)的文件需要解冻(Restore)之后才能读取。非归档类型的文件,不要调用restoreObject方法。 归档文件的状态变换过程如下: 归档类型的文件初始时处于冷冻状态。提交解冻操作后,服务端执行解冻,文件处于解冻中的状态。完成解冻后,可以读取文件。解冻状态默认持续1天,最多延长7天,之后文件又回到冷冻状态。 以下代码用于解冻归档文件: <?phpif (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;use OSS\Core\OssException;// 阿里云主账号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 { $ossClient = new OssClient($accessKeyId, $accessKeySecret, $endpoint); $ossClient->restoreObject($bucket, $object);} catch (OssException $e) { printf(__FUNCTION__ . ": FAILED\n"); printf($e->getMessage() . "\n"); return;}print(__FUNCTION__ . ": OK" . "\n"); 存储类型详情请参见存储类型。 符号链接创建符号链接符号链接是一种特殊的文件,它指向某个具体的文件,类似于Windows上使用的快捷方式。符号链接支持自定义元信息。 以下代码用于创建符号链接: <?phpif (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;use OSS\Core\OssException;// 阿里云主账号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>";$symlink = "<yourSymlink>";try { $ossClient = new OssClient($accessKeyId, $accessKeySecret, $endpoint); $ossClient->putSymlink($bucket, $symlink, $object);} catch (OssException $e) { printf(__FUNCTION__ . ": FAILED\n"); printf($e->getMessage() . "\n"); return;}print(__FUNCTION__ . ": OK" . "\n"); 获取符号链接指向的文件内容获取符号链接要求您对该符号链接有读权限。以下代码用于获取符号链接指向的文件内容: <?phpif (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;use OSS\Core\OssException;// 阿里云主账号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>";$symlink = "<yourSymlink>";try { $ossClient = new OssClient($accessKeyId, $accessKeySecret, $endpoint); $Symlinks = $ossClient->getSymlink($bucket, $symlink);} catch (OssException $e) { printf(__FUNCTION__ . ": FAILED\n"); printf($e->getMessage() . "\n"); return;}print(__FUNCTION__ . ": OK" . "\n");var_dump($Symlinks); 开启MD5校验MD5校验用于确保数据传输的完整性。使用MD5校验时,性能会有所损失。上传文件时默认关闭MD5校验。 以下代码用于上传文件时开启MD5校验: <?phpif (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;use OSS\Core\OssException;// 阿里云主账号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>";$options = array(OssClient::OSS_CHECK_MD5 => true);try{ $ossClient = new OssClient($accessKeyId, $accessKeySecret, $endpoint); $ossClient->uploadFile($bucket, $object, __FILE__, $options);} catch(OssException $e) { printf(__FUNCTION__ . ": FAILED\n"); printf($e->getMessage() . "\n"); return;}print(__FUNCTION__ . ": OK" . "\n"); putObject、uploadFile、appendObject、appendFile、multiuploadFile方法支持开启MD5校验。
2019-12-01 23:14:28 0 浏览量 回答数 0

回答

详细解答可以参考官方帮助文档您可以通过一系列的接口管理存储空间(Bucket)下的文件(Object)。管理文件的完整代码请参见:GitHub。 判断文件是否存在以下代码用于判断指定的文件是否存在: <?phpif (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;use OSS\Core\OssException;// 阿里云主账号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{ $ossClient = new OssClient($accessKeyId, $accessKeySecret, $endpoint); $exist = $ossClient->doesObjectExist($bucket, $object);} catch(OssException $e) { printf(__FUNCTION__ . ": FAILED\n"); printf($e->getMessage() . "\n"); return;}print(__FUNCTION__ . ": OK" . "\n");var_dump($exist); 文件访问权限文件的访问权限(ACL)有以下四种: 访问权限 描述 访问权限值 继承Bucket 文件遵循存储空间的访问权限。 default 私有 文件的拥有者和授权用户有该文件的读写权限,其他用户没有权限操作该文件。 private 公共读 文件的拥有者和授权用户有该文件的读写权限,其他用户只有文件的读权限。请谨慎使用该权限。 public-read 公共读写 所有用户都有该文件的读写权限。请谨慎使用该权限。 public-read-write 文件的访问权限优先级高于存储空间的访问权限。例如存储空间的访问权限是私有,而文件的访问权限是公共读写,则所有用户都有该文件的读写权限。如果某个文件没有设置过访问权限,则遵循存储空间的访问权限。 设置文件访问权限以下代码用于设置指定文件的访问权限: <?phpif (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;use OSS\Core\OssException;// 阿里云主账号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>";// 设置文件的访问权限为公共读,默认为继承Bucket。$acl = "public-read";try { $ossClient = new OssClient($accessKeyId, $accessKeySecret, $endpoint); $ossClient->putObjectAcl($bucket, $object, $acl);} catch (OssException $e) { printf(__FUNCTION__ . ": FAILED\n"); printf($e->getMessage() . "\n"); return;}print(__FUNCTION__ . ": OK" . "\n"); 获取文件访问权限以下代码用于获取指定文件的访问权限: <?phpif (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;use OSS\Core\OssException;// 阿里云主账号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 { $ossClient = new OssClient($accessKeyId, $accessKeySecret, $endpoint); $objectAcl = $ossClient->getObjectAcl($bucket, $object);} catch (OssException $e) { printf(__FUNCTION__ . ": FAILED\n"); printf($e->getMessage() . "\n"); return;}print(__FUNCTION__ . ": OK" . "\n");var_dump($objectAcl); 文件元信息文件元信息(Object Meta)详情请参见开发指南中的文件元信息。 设置文件元信息以下代码用于设置文件元信息: <?phpif (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;use OSS\Core\OssException;// 阿里云主账号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>";$content = file_get_contents(__FILE__);$options = array( OssClient::OSS_HEADERS => array( 'Expires' => '2012-10-01 08:00:00', 'Content-Disposition' => 'attachment; filename="xxxxxx"', 'x-oss-meta-self-define-title' => 'user define meta info', ));try{ $ossClient = new OssClient($accessKeyId, $accessKeySecret, $endpoint); $ossClient->putObject($bucket, $object, $content, $options);} catch(OssException $e) { printf(__FUNCTION__ . ": FAILED\n"); printf($e->getMessage() . "\n"); return;}print(__FUNCTION__ . ": OK" . "\n"); 修改文件元信息以下代码用于修改文件元信息: <?phpif (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;use OSS\Core\OssException;/// 阿里云主账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM账号进行API访问或日常运维,请登录 https://ram.console.aliyun.com 创建RAM账号。$accessKeyId = "<yourAccessKeyId>";$accessKeySecret = "<yourAccessKeySecret>";// Endpoint以杭州为例,其它Region请按实际情况填写。$endpoint = "http://oss-cn-hangzhou.aliyuncs.com";$fromBucket = "<yourFromBucketName>";$fromObject = "<yourFromObjectName>";$toBucket = "<yourToBucketName>";$toObject = "<yourToObjectName>";$copyOptions = array( OssClient::OSS_HEADERS => array( 'Expires' => '2018-10-01 08:00:00', 'Content-Disposition' => 'attachment; filename="xxxxxx"', 'x-oss-meta-location' => 'location', ),);try{ $ossClient = new OssClient($accessKeyId, $accessKeySecret, $endpoint); $ossClient->copyObject($fromBucket, $fromObject, $toBucket, $toObject, $copyOptions);} catch(OssException $e) { printf(__FUNCTION__ . ": FAILED\n"); printf($e->getMessage() . "\n"); return;}print(__FUNCTION__ . ": OK" . "\n"); 获取文件元信息以下代码用于获取文件元信息: <?phpif (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;use OSS\Core\OssException;// 阿里云主账号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 { $ossClient = new OssClient($accessKeyId, $accessKeySecret, $endpoint); $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");} 列举文件列举所有文件以下代码用于列举指定存储空间下的所有文件: <?phpif (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;use OSS\Core\OssException;// 阿里云主账号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>";$ossClient = new OssClient($accessKeyId, $accessKeySecret, $endpoint);while (true) { 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(); if (!empty($listObject)) { print("objectList:\n"); foreach ($listObject as $objectInfo) { print($objectInfo->getKey() . "\n"); } } if (!empty($listPrefix)) { print("prefixList: \n"); foreach ($listPrefix as $prefixInfo) { print($prefixInfo->getPrefix() . "\n"); } } if ($nextMarker === '') { break; }} 列举指定条件的文件以下代码用于列举指定条件的文件: <?phpif (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;use OSS\Core\OssException;// 阿里云主账号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>";$ossClient = new OssClient($accessKeyId, $accessKeySecret, $endpoint);$prefix = 'dir/';$delimiter = '/';$nextMarker = '';$maxkeys = 10;$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(); // object list$prefixList = $listObjectInfo->getPrefixList(); // directory listif (!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"); }} 上述例子中的$options包含的参数如下: 参数 说明 是否必需 delimiter 对文件名称进行分组的一个字符。CommonPrefixes是以delimiter结尾,并有共同前缀的文件集合。 否 prefix 本次查询结果的前缀。 否 max-keys 列举文件的最大个数。默认为100,最大值为1000。 否 marker 标明本次列举文件的起点。 否 删除文件删除单个文件以下代码用于删除单个文件: <?phpif (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;use OSS\Core\OssException;// 阿里云主账号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{ $ossClient = new OssClient($accessKeyId, $accessKeySecret, $endpoint); $ossClient->deleteObject($bucket, $object);} catch(OssException $e) { printf(__FUNCTION__ . ": FAILED\n"); printf($e->getMessage() . "\n"); return;}print(__FUNCTION__ . ": OK" . "\n"); 删除多个文件以下代码用于批量删除文件: <?phpif (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;use OSS\Core\OssException;// 阿里云主账号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>";$objects = array();$objects[] = "<yourObjectName1>";$objects[] = "<yourObjectName2>";try{ $ossClient = new OssClient($accessKeyId, $accessKeySecret, $endpoint); $ossClient->deleteObjects($bucket, $objects);} catch(OssException $e) { printf(__FUNCTION__ . ": FAILED\n"); printf($e->getMessage() . "\n"); return;}print(__FUNCTION__ . ": OK" . "\n"); 拷贝文件简单拷贝以下代码用于拷贝小于1GB的文件: <?phpif (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;use OSS\Core\OssException;// 阿里云主账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM账号进行API访问或日常运维,请登录 https://ram.console.aliyun.com 创建RAM账号。$accessKeyId = "<yourAccessKeyId>";$accessKeySecret = "<yourAccessKeySecret>";// Endpoint以杭州为例,其它Region请按实际情况填写。$endpoint = "http://oss-cn-hangzhou.aliyuncs.com";$from_bucket = "<yourFromBucketName>";$from_object = "<yourFromObjectName>";$to_bucket = $bucket;$to_object = $from_object . '.copy';try{ $ossClient = new OssClient($accessKeyId, $accessKeySecret, $endpoint); $ossClient->copyObject($from_bucket, $from_object, $to_bucket, $to_object);} catch(OssException $e) { printf(__FUNCTION__ . ": FAILED\n"); printf($e->getMessage() . "\n"); return;}print(__FUNCTION__ . ": OK" . "\n");` 拷贝大文件对于大于1GB的文件,需要使用分片拷贝。分片拷贝分为三步: 通过$ossClient->initiateMultipartUpload初始化分片拷贝任务。通过$ossClient->uploadPartCopy进行分片拷贝。除最后一个分片外,其它分片都要大于100KB。通过$ossClient->completeMultipartUpload提交分片拷贝任务。 以下代码用于分片拷贝: <?phpif (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;use OSS\Core\OssException;// 阿里云主账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM账号进行API访问或日常运维,请登录 https://ram.console.aliyun.com 创建RAM账号。$accessKeyId = "<yourAccessKeyId>";$accessKeySecret = "<yourAccessKeySecret>";// Endpoint以杭州为例,其它Region请按实际情况填写。$endpoint = "http://oss-cn-hangzhou.aliyuncs.com";$src_bucket = "<yourSourceBucketName>";$src_object = "<yourSourceObjectName>";$dst_bucket = "<yourDestinationBucketName>";$dst_object = "<yourDestinationObjectName>";try{ $ossClient = new OssClient($accessKeyId, $accessKeySecret, $endpoint); // 初始化分片。 $upload_id = $ossClient->initiateMultipartUpload($dst_bucket, $dst_object); $copyId = 1; // 逐个分片拷贝。 $eTag = $ossClient->uploadPartCopy( $src_bucket, $src_object, $dst_bucket, $dst_object,$copyId, $upload_id); $upload_parts[] = array( 'PartNumber' => $copyId, 'ETag' => $eTag, ); // 完成分片拷贝。 $result = $ossClient->completeMultipartUpload($dst_bucket, $dst_object, $upload_id, $upload_parts);} catch(OssException $e) { printf(__FUNCTION__ . ": FAILED\n"); printf($e->getMessage() . "\n"); return;}print(__FUNCTION__ . ": OK" . "\n"); 解冻归档文件归档类型(Archive)的文件需要解冻(Restore)之后才能读取。非归档类型的文件,不要调用restoreObject方法。 归档文件的状态变换过程如下: 归档类型的文件初始时处于冷冻状态。提交解冻操作后,服务端执行解冻,文件处于解冻中的状态。完成解冻后,可以读取文件。解冻状态默认持续1天,最多延长7天,之后文件又回到冷冻状态。 以下代码用于解冻归档文件: <?phpif (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;use OSS\Core\OssException;// 阿里云主账号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 { $ossClient = new OssClient($accessKeyId, $accessKeySecret, $endpoint); $ossClient->restoreObject($bucket, $object);} catch (OssException $e) { printf(__FUNCTION__ . ": FAILED\n"); printf($e->getMessage() . "\n"); return;}print(__FUNCTION__ . ": OK" . "\n"); 存储类型详情请参见存储类型。 符号链接创建符号链接符号链接是一种特殊的文件,它指向某个具体的文件,类似于Windows上使用的快捷方式。符号链接支持自定义元信息。 以下代码用于创建符号链接: <?phpif (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;use OSS\Core\OssException;// 阿里云主账号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>";$symlink = "<yourSymlink>";try { $ossClient = new OssClient($accessKeyId, $accessKeySecret, $endpoint); $ossClient->putSymlink($bucket, $symlink, $object);} catch (OssException $e) { printf(__FUNCTION__ . ": FAILED\n"); printf($e->getMessage() . "\n"); return;}print(__FUNCTION__ . ": OK" . "\n"); 获取符号链接指向的文件内容获取符号链接要求您对该符号链接有读权限。以下代码用于获取符号链接指向的文件内容: <?phpif (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;use OSS\Core\OssException;// 阿里云主账号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>";$symlink = "<yourSymlink>";try { $ossClient = new OssClient($accessKeyId, $accessKeySecret, $endpoint); $Symlinks = $ossClient->getSymlink($bucket, $symlink);} catch (OssException $e) { printf(__FUNCTION__ . ": FAILED\n"); printf($e->getMessage() . "\n"); return;}print(__FUNCTION__ . ": OK" . "\n");var_dump($Symlinks); 开启MD5校验MD5校验用于确保数据传输的完整性。使用MD5校验时,性能会有所损失。上传文件时默认关闭MD5校验。 以下代码用于上传文件时开启MD5校验: <?phpif (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;use OSS\Core\OssException;// 阿里云主账号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>";$options = array(OssClient::OSS_CHECK_MD5 => true);try{ $ossClient = new OssClient($accessKeyId, $accessKeySecret, $endpoint); $ossClient->uploadFile($bucket, $object, __FILE__, $options);} catch(OssException $e) { printf(__FUNCTION__ . ": FAILED\n"); printf($e->getMessage() . "\n"); return;}print(__FUNCTION__ . ": OK" . "\n"); putObject、uploadFile、appendObject、appendFile、multiuploadFile方法支持开启MD5校验。
2019-12-01 23:14:29 0 浏览量 回答数 0

回答

详细解答可以参考官方帮助文档您可以通过一系列的接口管理存储空间(Bucket)下的文件(Object)。管理文件的完整代码请参见:GitHub。 判断文件是否存在以下代码用于判断指定的文件是否存在: <?phpif (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;use OSS\Core\OssException;// 阿里云主账号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{ $ossClient = new OssClient($accessKeyId, $accessKeySecret, $endpoint); $exist = $ossClient->doesObjectExist($bucket, $object);} catch(OssException $e) { printf(__FUNCTION__ . ": FAILED\n"); printf($e->getMessage() . "\n"); return;}print(__FUNCTION__ . ": OK" . "\n");var_dump($exist); 文件访问权限文件的访问权限(ACL)有以下四种: 访问权限 描述 访问权限值 继承Bucket 文件遵循存储空间的访问权限。 default 私有 文件的拥有者和授权用户有该文件的读写权限,其他用户没有权限操作该文件。 private 公共读 文件的拥有者和授权用户有该文件的读写权限,其他用户只有文件的读权限。请谨慎使用该权限。 public-read 公共读写 所有用户都有该文件的读写权限。请谨慎使用该权限。 public-read-write 文件的访问权限优先级高于存储空间的访问权限。例如存储空间的访问权限是私有,而文件的访问权限是公共读写,则所有用户都有该文件的读写权限。如果某个文件没有设置过访问权限,则遵循存储空间的访问权限。 设置文件访问权限以下代码用于设置指定文件的访问权限: <?phpif (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;use OSS\Core\OssException;// 阿里云主账号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>";// 设置文件的访问权限为公共读,默认为继承Bucket。$acl = "public-read";try { $ossClient = new OssClient($accessKeyId, $accessKeySecret, $endpoint); $ossClient->putObjectAcl($bucket, $object, $acl);} catch (OssException $e) { printf(__FUNCTION__ . ": FAILED\n"); printf($e->getMessage() . "\n"); return;}print(__FUNCTION__ . ": OK" . "\n"); 获取文件访问权限以下代码用于获取指定文件的访问权限: <?phpif (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;use OSS\Core\OssException;// 阿里云主账号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 { $ossClient = new OssClient($accessKeyId, $accessKeySecret, $endpoint); $objectAcl = $ossClient->getObjectAcl($bucket, $object);} catch (OssException $e) { printf(__FUNCTION__ . ": FAILED\n"); printf($e->getMessage() . "\n"); return;}print(__FUNCTION__ . ": OK" . "\n");var_dump($objectAcl); 文件元信息文件元信息(Object Meta)详情请参见开发指南中的文件元信息。 设置文件元信息以下代码用于设置文件元信息: <?phpif (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;use OSS\Core\OssException;// 阿里云主账号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>";$content = file_get_contents(__FILE__);$options = array( OssClient::OSS_HEADERS => array( 'Expires' => '2012-10-01 08:00:00', 'Content-Disposition' => 'attachment; filename="xxxxxx"', 'x-oss-meta-self-define-title' => 'user define meta info', ));try{ $ossClient = new OssClient($accessKeyId, $accessKeySecret, $endpoint); $ossClient->putObject($bucket, $object, $content, $options);} catch(OssException $e) { printf(__FUNCTION__ . ": FAILED\n"); printf($e->getMessage() . "\n"); return;}print(__FUNCTION__ . ": OK" . "\n"); 修改文件元信息以下代码用于修改文件元信息: <?phpif (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;use OSS\Core\OssException;/// 阿里云主账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM账号进行API访问或日常运维,请登录 https://ram.console.aliyun.com 创建RAM账号。$accessKeyId = "<yourAccessKeyId>";$accessKeySecret = "<yourAccessKeySecret>";// Endpoint以杭州为例,其它Region请按实际情况填写。$endpoint = "http://oss-cn-hangzhou.aliyuncs.com";$fromBucket = "<yourFromBucketName>";$fromObject = "<yourFromObjectName>";$toBucket = "<yourToBucketName>";$toObject = "<yourToObjectName>";$copyOptions = array( OssClient::OSS_HEADERS => array( 'Expires' => '2018-10-01 08:00:00', 'Content-Disposition' => 'attachment; filename="xxxxxx"', 'x-oss-meta-location' => 'location', ),);try{ $ossClient = new OssClient($accessKeyId, $accessKeySecret, $endpoint); $ossClient->copyObject($fromBucket, $fromObject, $toBucket, $toObject, $copyOptions);} catch(OssException $e) { printf(__FUNCTION__ . ": FAILED\n"); printf($e->getMessage() . "\n"); return;}print(__FUNCTION__ . ": OK" . "\n"); 获取文件元信息以下代码用于获取文件元信息: <?phpif (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;use OSS\Core\OssException;// 阿里云主账号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 { $ossClient = new OssClient($accessKeyId, $accessKeySecret, $endpoint); $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");} 列举文件列举所有文件以下代码用于列举指定存储空间下的所有文件: <?phpif (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;use OSS\Core\OssException;// 阿里云主账号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>";$ossClient = new OssClient($accessKeyId, $accessKeySecret, $endpoint);while (true) { 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(); if (!empty($listObject)) { print("objectList:\n"); foreach ($listObject as $objectInfo) { print($objectInfo->getKey() . "\n"); } } if (!empty($listPrefix)) { print("prefixList: \n"); foreach ($listPrefix as $prefixInfo) { print($prefixInfo->getPrefix() . "\n"); } } if ($nextMarker === '') { break; }} 列举指定条件的文件以下代码用于列举指定条件的文件: <?phpif (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;use OSS\Core\OssException;// 阿里云主账号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>";$ossClient = new OssClient($accessKeyId, $accessKeySecret, $endpoint);$prefix = 'dir/';$delimiter = '/';$nextMarker = '';$maxkeys = 10;$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(); // object list$prefixList = $listObjectInfo->getPrefixList(); // directory listif (!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"); }} 上述例子中的$options包含的参数如下: 参数 说明 是否必需 delimiter 对文件名称进行分组的一个字符。CommonPrefixes是以delimiter结尾,并有共同前缀的文件集合。 否 prefix 本次查询结果的前缀。 否 max-keys 列举文件的最大个数。默认为100,最大值为1000。 否 marker 标明本次列举文件的起点。 否 删除文件删除单个文件以下代码用于删除单个文件: <?phpif (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;use OSS\Core\OssException;// 阿里云主账号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{ $ossClient = new OssClient($accessKeyId, $accessKeySecret, $endpoint); $ossClient->deleteObject($bucket, $object);} catch(OssException $e) { printf(__FUNCTION__ . ": FAILED\n"); printf($e->getMessage() . "\n"); return;}print(__FUNCTION__ . ": OK" . "\n"); 删除多个文件以下代码用于批量删除文件: <?phpif (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;use OSS\Core\OssException;// 阿里云主账号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>";$objects = array();$objects[] = "<yourObjectName1>";$objects[] = "<yourObjectName2>";try{ $ossClient = new OssClient($accessKeyId, $accessKeySecret, $endpoint); $ossClient->deleteObjects($bucket, $objects);} catch(OssException $e) { printf(__FUNCTION__ . ": FAILED\n"); printf($e->getMessage() . "\n"); return;}print(__FUNCTION__ . ": OK" . "\n"); 拷贝文件简单拷贝以下代码用于拷贝小于1GB的文件: <?phpif (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;use OSS\Core\OssException;// 阿里云主账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM账号进行API访问或日常运维,请登录 https://ram.console.aliyun.com 创建RAM账号。$accessKeyId = "<yourAccessKeyId>";$accessKeySecret = "<yourAccessKeySecret>";// Endpoint以杭州为例,其它Region请按实际情况填写。$endpoint = "http://oss-cn-hangzhou.aliyuncs.com";$from_bucket = "<yourFromBucketName>";$from_object = "<yourFromObjectName>";$to_bucket = $bucket;$to_object = $from_object . '.copy';try{ $ossClient = new OssClient($accessKeyId, $accessKeySecret, $endpoint); $ossClient->copyObject($from_bucket, $from_object, $to_bucket, $to_object);} catch(OssException $e) { printf(__FUNCTION__ . ": FAILED\n"); printf($e->getMessage() . "\n"); return;}print(__FUNCTION__ . ": OK" . "\n");` 拷贝大文件对于大于1GB的文件,需要使用分片拷贝。分片拷贝分为三步: 通过$ossClient->initiateMultipartUpload初始化分片拷贝任务。通过$ossClient->uploadPartCopy进行分片拷贝。除最后一个分片外,其它分片都要大于100KB。通过$ossClient->completeMultipartUpload提交分片拷贝任务。 以下代码用于分片拷贝: <?phpif (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;use OSS\Core\OssException;// 阿里云主账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM账号进行API访问或日常运维,请登录 https://ram.console.aliyun.com 创建RAM账号。$accessKeyId = "<yourAccessKeyId>";$accessKeySecret = "<yourAccessKeySecret>";// Endpoint以杭州为例,其它Region请按实际情况填写。$endpoint = "http://oss-cn-hangzhou.aliyuncs.com";$src_bucket = "<yourSourceBucketName>";$src_object = "<yourSourceObjectName>";$dst_bucket = "<yourDestinationBucketName>";$dst_object = "<yourDestinationObjectName>";try{ $ossClient = new OssClient($accessKeyId, $accessKeySecret, $endpoint); // 初始化分片。 $upload_id = $ossClient->initiateMultipartUpload($dst_bucket, $dst_object); $copyId = 1; // 逐个分片拷贝。 $eTag = $ossClient->uploadPartCopy( $src_bucket, $src_object, $dst_bucket, $dst_object,$copyId, $upload_id); $upload_parts[] = array( 'PartNumber' => $copyId, 'ETag' => $eTag, ); // 完成分片拷贝。 $result = $ossClient->completeMultipartUpload($dst_bucket, $dst_object, $upload_id, $upload_parts);} catch(OssException $e) { printf(__FUNCTION__ . ": FAILED\n"); printf($e->getMessage() . "\n"); return;}print(__FUNCTION__ . ": OK" . "\n"); 解冻归档文件归档类型(Archive)的文件需要解冻(Restore)之后才能读取。非归档类型的文件,不要调用restoreObject方法。 归档文件的状态变换过程如下: 归档类型的文件初始时处于冷冻状态。提交解冻操作后,服务端执行解冻,文件处于解冻中的状态。完成解冻后,可以读取文件。解冻状态默认持续1天,最多延长7天,之后文件又回到冷冻状态。 以下代码用于解冻归档文件: <?phpif (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;use OSS\Core\OssException;// 阿里云主账号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 { $ossClient = new OssClient($accessKeyId, $accessKeySecret, $endpoint); $ossClient->restoreObject($bucket, $object);} catch (OssException $e) { printf(__FUNCTION__ . ": FAILED\n"); printf($e->getMessage() . "\n"); return;}print(__FUNCTION__ . ": OK" . "\n"); 存储类型详情请参见存储类型。 符号链接创建符号链接符号链接是一种特殊的文件,它指向某个具体的文件,类似于Windows上使用的快捷方式。符号链接支持自定义元信息。 以下代码用于创建符号链接: <?phpif (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;use OSS\Core\OssException;// 阿里云主账号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>";$symlink = "<yourSymlink>";try { $ossClient = new OssClient($accessKeyId, $accessKeySecret, $endpoint); $ossClient->putSymlink($bucket, $symlink, $object);} catch (OssException $e) { printf(__FUNCTION__ . ": FAILED\n"); printf($e->getMessage() . "\n"); return;}print(__FUNCTION__ . ": OK" . "\n"); 获取符号链接指向的文件内容获取符号链接要求您对该符号链接有读权限。以下代码用于获取符号链接指向的文件内容: <?phpif (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;use OSS\Core\OssException;// 阿里云主账号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>";$symlink = "<yourSymlink>";try { $ossClient = new OssClient($accessKeyId, $accessKeySecret, $endpoint); $Symlinks = $ossClient->getSymlink($bucket, $symlink);} catch (OssException $e) { printf(__FUNCTION__ . ": FAILED\n"); printf($e->getMessage() . "\n"); return;}print(__FUNCTION__ . ": OK" . "\n");var_dump($Symlinks); 开启MD5校验MD5校验用于确保数据传输的完整性。使用MD5校验时,性能会有所损失。上传文件时默认关闭MD5校验。 以下代码用于上传文件时开启MD5校验: <?phpif (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;use OSS\Core\OssException;// 阿里云主账号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>";$options = array(OssClient::OSS_CHECK_MD5 => true);try{ $ossClient = new OssClient($accessKeyId, $accessKeySecret, $endpoint); $ossClient->uploadFile($bucket, $object, __FILE__, $options);} catch(OssException $e) { printf(__FUNCTION__ . ": FAILED\n"); printf($e->getMessage() . "\n"); return;}print(__FUNCTION__ . ": OK" . "\n"); putObject、uploadFile、appendObject、appendFile、multiuploadFile方法支持开启MD5校验。
2019-12-01 23:14:29 0 浏览量 回答数 0

回答

详细解答可以参考官方帮助文档您可以通过一系列的接口管理存储空间(Bucket)下的文件(Object)。管理文件的完整代码请参见:GitHub。 判断文件是否存在以下代码用于判断指定的文件是否存在: <?phpif (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;use OSS\Core\OssException;// 阿里云主账号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{ $ossClient = new OssClient($accessKeyId, $accessKeySecret, $endpoint); $exist = $ossClient->doesObjectExist($bucket, $object);} catch(OssException $e) { printf(__FUNCTION__ . ": FAILED\n"); printf($e->getMessage() . "\n"); return;}print(__FUNCTION__ . ": OK" . "\n");var_dump($exist); 文件访问权限文件的访问权限(ACL)有以下四种: 访问权限 描述 访问权限值 继承Bucket 文件遵循存储空间的访问权限。 default 私有 文件的拥有者和授权用户有该文件的读写权限,其他用户没有权限操作该文件。 private 公共读 文件的拥有者和授权用户有该文件的读写权限,其他用户只有文件的读权限。请谨慎使用该权限。 public-read 公共读写 所有用户都有该文件的读写权限。请谨慎使用该权限。 public-read-write 文件的访问权限优先级高于存储空间的访问权限。例如存储空间的访问权限是私有,而文件的访问权限是公共读写,则所有用户都有该文件的读写权限。如果某个文件没有设置过访问权限,则遵循存储空间的访问权限。 设置文件访问权限以下代码用于设置指定文件的访问权限: <?phpif (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;use OSS\Core\OssException;// 阿里云主账号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>";// 设置文件的访问权限为公共读,默认为继承Bucket。$acl = "public-read";try { $ossClient = new OssClient($accessKeyId, $accessKeySecret, $endpoint); $ossClient->putObjectAcl($bucket, $object, $acl);} catch (OssException $e) { printf(__FUNCTION__ . ": FAILED\n"); printf($e->getMessage() . "\n"); return;}print(__FUNCTION__ . ": OK" . "\n"); 获取文件访问权限以下代码用于获取指定文件的访问权限: <?phpif (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;use OSS\Core\OssException;// 阿里云主账号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 { $ossClient = new OssClient($accessKeyId, $accessKeySecret, $endpoint); $objectAcl = $ossClient->getObjectAcl($bucket, $object);} catch (OssException $e) { printf(__FUNCTION__ . ": FAILED\n"); printf($e->getMessage() . "\n"); return;}print(__FUNCTION__ . ": OK" . "\n");var_dump($objectAcl); 文件元信息文件元信息(Object Meta)详情请参见开发指南中的文件元信息。 设置文件元信息以下代码用于设置文件元信息: <?phpif (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;use OSS\Core\OssException;// 阿里云主账号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>";$content = file_get_contents(__FILE__);$options = array( OssClient::OSS_HEADERS => array( 'Expires' => '2012-10-01 08:00:00', 'Content-Disposition' => 'attachment; filename="xxxxxx"', 'x-oss-meta-self-define-title' => 'user define meta info', ));try{ $ossClient = new OssClient($accessKeyId, $accessKeySecret, $endpoint); $ossClient->putObject($bucket, $object, $content, $options);} catch(OssException $e) { printf(__FUNCTION__ . ": FAILED\n"); printf($e->getMessage() . "\n"); return;}print(__FUNCTION__ . ": OK" . "\n"); 修改文件元信息以下代码用于修改文件元信息: <?phpif (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;use OSS\Core\OssException;/// 阿里云主账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM账号进行API访问或日常运维,请登录 https://ram.console.aliyun.com 创建RAM账号。$accessKeyId = "<yourAccessKeyId>";$accessKeySecret = "<yourAccessKeySecret>";// Endpoint以杭州为例,其它Region请按实际情况填写。$endpoint = "http://oss-cn-hangzhou.aliyuncs.com";$fromBucket = "<yourFromBucketName>";$fromObject = "<yourFromObjectName>";$toBucket = "<yourToBucketName>";$toObject = "<yourToObjectName>";$copyOptions = array( OssClient::OSS_HEADERS => array( 'Expires' => '2018-10-01 08:00:00', 'Content-Disposition' => 'attachment; filename="xxxxxx"', 'x-oss-meta-location' => 'location', ),);try{ $ossClient = new OssClient($accessKeyId, $accessKeySecret, $endpoint); $ossClient->copyObject($fromBucket, $fromObject, $toBucket, $toObject, $copyOptions);} catch(OssException $e) { printf(__FUNCTION__ . ": FAILED\n"); printf($e->getMessage() . "\n"); return;}print(__FUNCTION__ . ": OK" . "\n"); 获取文件元信息以下代码用于获取文件元信息: <?phpif (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;use OSS\Core\OssException;// 阿里云主账号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 { $ossClient = new OssClient($accessKeyId, $accessKeySecret, $endpoint); $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");} 列举文件列举所有文件以下代码用于列举指定存储空间下的所有文件: <?phpif (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;use OSS\Core\OssException;// 阿里云主账号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>";$ossClient = new OssClient($accessKeyId, $accessKeySecret, $endpoint);while (true) { 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(); if (!empty($listObject)) { print("objectList:\n"); foreach ($listObject as $objectInfo) { print($objectInfo->getKey() . "\n"); } } if (!empty($listPrefix)) { print("prefixList: \n"); foreach ($listPrefix as $prefixInfo) { print($prefixInfo->getPrefix() . "\n"); } } if ($nextMarker === '') { break; }} 列举指定条件的文件以下代码用于列举指定条件的文件: <?phpif (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;use OSS\Core\OssException;// 阿里云主账号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>";$ossClient = new OssClient($accessKeyId, $accessKeySecret, $endpoint);$prefix = 'dir/';$delimiter = '/';$nextMarker = '';$maxkeys = 10;$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(); // object list$prefixList = $listObjectInfo->getPrefixList(); // directory listif (!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"); }} 上述例子中的$options包含的参数如下: 参数 说明 是否必需 delimiter 对文件名称进行分组的一个字符。CommonPrefixes是以delimiter结尾,并有共同前缀的文件集合。 否 prefix 本次查询结果的前缀。 否 max-keys 列举文件的最大个数。默认为100,最大值为1000。 否 marker 标明本次列举文件的起点。 否 删除文件删除单个文件以下代码用于删除单个文件: <?phpif (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;use OSS\Core\OssException;// 阿里云主账号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{ $ossClient = new OssClient($accessKeyId, $accessKeySecret, $endpoint); $ossClient->deleteObject($bucket, $object);} catch(OssException $e) { printf(__FUNCTION__ . ": FAILED\n"); printf($e->getMessage() . "\n"); return;}print(__FUNCTION__ . ": OK" . "\n"); 删除多个文件以下代码用于批量删除文件: <?phpif (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;use OSS\Core\OssException;// 阿里云主账号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>";$objects = array();$objects[] = "<yourObjectName1>";$objects[] = "<yourObjectName2>";try{ $ossClient = new OssClient($accessKeyId, $accessKeySecret, $endpoint); $ossClient->deleteObjects($bucket, $objects);} catch(OssException $e) { printf(__FUNCTION__ . ": FAILED\n"); printf($e->getMessage() . "\n"); return;}print(__FUNCTION__ . ": OK" . "\n"); 拷贝文件简单拷贝以下代码用于拷贝小于1GB的文件: <?phpif (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;use OSS\Core\OssException;// 阿里云主账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM账号进行API访问或日常运维,请登录 https://ram.console.aliyun.com 创建RAM账号。$accessKeyId = "<yourAccessKeyId>";$accessKeySecret = "<yourAccessKeySecret>";// Endpoint以杭州为例,其它Region请按实际情况填写。$endpoint = "http://oss-cn-hangzhou.aliyuncs.com";$from_bucket = "<yourFromBucketName>";$from_object = "<yourFromObjectName>";$to_bucket = $bucket;$to_object = $from_object . '.copy';try{ $ossClient = new OssClient($accessKeyId, $accessKeySecret, $endpoint); $ossClient->copyObject($from_bucket, $from_object, $to_bucket, $to_object);} catch(OssException $e) { printf(__FUNCTION__ . ": FAILED\n"); printf($e->getMessage() . "\n"); return;}print(__FUNCTION__ . ": OK" . "\n");` 拷贝大文件对于大于1GB的文件,需要使用分片拷贝。分片拷贝分为三步: 通过$ossClient->initiateMultipartUpload初始化分片拷贝任务。通过$ossClient->uploadPartCopy进行分片拷贝。除最后一个分片外,其它分片都要大于100KB。通过$ossClient->completeMultipartUpload提交分片拷贝任务。 以下代码用于分片拷贝: <?phpif (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;use OSS\Core\OssException;// 阿里云主账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM账号进行API访问或日常运维,请登录 https://ram.console.aliyun.com 创建RAM账号。$accessKeyId = "<yourAccessKeyId>";$accessKeySecret = "<yourAccessKeySecret>";// Endpoint以杭州为例,其它Region请按实际情况填写。$endpoint = "http://oss-cn-hangzhou.aliyuncs.com";$src_bucket = "<yourSourceBucketName>";$src_object = "<yourSourceObjectName>";$dst_bucket = "<yourDestinationBucketName>";$dst_object = "<yourDestinationObjectName>";try{ $ossClient = new OssClient($accessKeyId, $accessKeySecret, $endpoint); // 初始化分片。 $upload_id = $ossClient->initiateMultipartUpload($dst_bucket, $dst_object); $copyId = 1; // 逐个分片拷贝。 $eTag = $ossClient->uploadPartCopy( $src_bucket, $src_object, $dst_bucket, $dst_object,$copyId, $upload_id); $upload_parts[] = array( 'PartNumber' => $copyId, 'ETag' => $eTag, ); // 完成分片拷贝。 $result = $ossClient->completeMultipartUpload($dst_bucket, $dst_object, $upload_id, $upload_parts);} catch(OssException $e) { printf(__FUNCTION__ . ": FAILED\n"); printf($e->getMessage() . "\n"); return;}print(__FUNCTION__ . ": OK" . "\n"); 解冻归档文件归档类型(Archive)的文件需要解冻(Restore)之后才能读取。非归档类型的文件,不要调用restoreObject方法。 归档文件的状态变换过程如下: 归档类型的文件初始时处于冷冻状态。提交解冻操作后,服务端执行解冻,文件处于解冻中的状态。完成解冻后,可以读取文件。解冻状态默认持续1天,最多延长7天,之后文件又回到冷冻状态。 以下代码用于解冻归档文件: <?phpif (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;use OSS\Core\OssException;// 阿里云主账号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 { $ossClient = new OssClient($accessKeyId, $accessKeySecret, $endpoint); $ossClient->restoreObject($bucket, $object);} catch (OssException $e) { printf(__FUNCTION__ . ": FAILED\n"); printf($e->getMessage() . "\n"); return;}print(__FUNCTION__ . ": OK" . "\n"); 存储类型详情请参见存储类型。 符号链接创建符号链接符号链接是一种特殊的文件,它指向某个具体的文件,类似于Windows上使用的快捷方式。符号链接支持自定义元信息。 以下代码用于创建符号链接: <?phpif (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;use OSS\Core\OssException;// 阿里云主账号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>";$symlink = "<yourSymlink>";try { $ossClient = new OssClient($accessKeyId, $accessKeySecret, $endpoint); $ossClient->putSymlink($bucket, $symlink, $object);} catch (OssException $e) { printf(__FUNCTION__ . ": FAILED\n"); printf($e->getMessage() . "\n"); return;}print(__FUNCTION__ . ": OK" . "\n"); 获取符号链接指向的文件内容获取符号链接要求您对该符号链接有读权限。以下代码用于获取符号链接指向的文件内容: <?phpif (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;use OSS\Core\OssException;// 阿里云主账号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>";$symlink = "<yourSymlink>";try { $ossClient = new OssClient($accessKeyId, $accessKeySecret, $endpoint); $Symlinks = $ossClient->getSymlink($bucket, $symlink);} catch (OssException $e) { printf(__FUNCTION__ . ": FAILED\n"); printf($e->getMessage() . "\n"); return;}print(__FUNCTION__ . ": OK" . "\n");var_dump($Symlinks); 开启MD5校验MD5校验用于确保数据传输的完整性。使用MD5校验时,性能会有所损失。上传文件时默认关闭MD5校验。 以下代码用于上传文件时开启MD5校验: <?phpif (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;use OSS\Core\OssException;// 阿里云主账号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>";$options = array(OssClient::OSS_CHECK_MD5 => true);try{ $ossClient = new OssClient($accessKeyId, $accessKeySecret, $endpoint); $ossClient->uploadFile($bucket, $object, __FILE__, $options);} catch(OssException $e) { printf(__FUNCTION__ . ": FAILED\n"); printf($e->getMessage() . "\n"); return;}print(__FUNCTION__ . ": OK" . "\n"); putObject、uploadFile、appendObject、appendFile、multiuploadFile方法支持开启MD5校验。
2019-12-01 23:14:29 0 浏览量 回答数 0
阿里云大学 云服务器ECS com域名 网站域名whois查询 开发者平台 小程序定制 小程序开发 国内短信套餐包 开发者技术与产品 云数据库 图像识别 开发者问答 阿里云建站 阿里云备案 云市场 万网 阿里云帮助文档 免费套餐 开发者工具 企业信息查询 小程序开发制作 视频内容分析 企业网站制作 视频集锦 代理记账服务 企业建站模板