阿里云OSS学习笔记

简单的概述一下,OSS的确是个好东西,用它做过图床、微网盘(已下线)。不需要考虑你的存储系统上限,即不需要考虑需要多大的硬盘,OSS无限空间自动伸缩;不用担心成本,OSS按需付费,每天结算一次;不用担心流量成本,OSS内网流量免费;不用担心安全,OSS每天自动备份……总之各种好处多多。

当然,OSS还算是个新的服务,有时候真的会抽风,但目前还没发现过数据丢失的问题!感觉还是很可以的嘛:)~~

简单的说一下学习过程和成果。

吐槽一下阿里云的签名机制,赶脚好蛋疼啊。比如拿上传文件和获取URL外链地址来做个比较吧,可能OSS的后端验证的问题吧,上传文件时必有参数为content-length(和content-md5二选一)、content-type、date。sign的时候是method+\n+content-md5+\n+content-type+\n+date+uri。好吧,赶脚还可以,然后再到获取URL外链地址,坑鸟。content-length、content-md5、content-type可以不要,但是在签名的时候又必须在!!只不过是空的。也就是说,sign的时候变成了method+\n+\n+\n+date+uri。- -#

所以,只能发挥php强大的数组的功能了。$options[‘content-type’] = ”然后生成签名的时候$signString = implode(“\n”,$options)。哈哈。搞定。

没错,OSS有自己的SDK,但是,,,programer,重在折腾:)。所以自己搞了个自己用的SDK,用法如下(只实现了简单的上传、删除、获取外链的功能):

$aliyun = new aliyun('bucket名称','授权ID','授权密钥');

// 上传
# 直接上传二进制内容
$aliyun->upload('1.jpg',file_get_contents('1.jpg'));
# 上传略大的文件 比如一个50M的压缩包
# OSS建议超过100M的文件使用分段上传提升速度但是经过实际测试在EC2上通过内网上传一个500M的压缩包,用时也就25秒的时间,还是可以接受的嘛~~:)
$aliyun->upload('xxx.zip','/data/xxx.zip');

// 删除
$aliyun->delete('1.jpg');
#批量删除 还无法正常使用,莫名的错误- -#我的问题不是OSS的
$aliyun->delete(array('1.jpg','xxx.zip'));

// 获取外链地址    默认有效时间是1天
$aliyun->getOutUrl('xxx.zip');
# 自定义有效时间 单位为 秒
$aliyun->getOutUrl('xxx.zip',10);

ok,暂时就这么多了,需要的童鞋可以留邮箱~~ 写的很丑~~不敢现世啊 🙂