简单的概述一下,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);
-------------------------
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。