开发者社区> 问答> 正文

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);


展开
收起
cevin 2013-12-31 11:11:39 8494 0
2 条回答
写回答
取消 提交回答
  • 回1楼ftp4oss的帖子
    那就不知道了。哈哈。iftop状态显示貌似不止20M哦。

    杭州的OSS



    ---  附截图:




    代码:






    OSS浏览:

    2014-01-01 00:30:58
    赞同 展开评论 打赏
  • ReOSS折腾记
    经过实际测试在EC2上通过内网上传一个500M的压缩包,用时也就25秒的时间

    ——楼主您好,按照您的测试,内网到OSS能达到每秒20M的速度,可是我这里测试的为啥只有每秒5M而已呢?奇怪极了~~~

    -------------------------

    ReOSS折腾记
    非常感谢楼主,我再联系阿里云的工程师看一看,看是否是我的ECS所在节点的问题~~~
    2013-12-31 19:52:20
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
云存储之OSS实战进阶分享 立即下载
百问百答-OSS (下) 立即下载
百问百答-OSS (上) 立即下载